{"version":3,"file":"static/chunks/pages/[country]/w/[symbol]-c83e16675868663d.js","mappings":"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","sources":["webpack://_N_E/?1dde","webpack://_N_E/./src/api/client/detail-page-download.api.ts","webpack://_N_E/./src/api/client/portfolio-table.api.ts","webpack://_N_E/./src/components/common/benchmark/configs.ts","webpack://_N_E/./src/components/common/benchmark/utils/chart-util.tsx","webpack://_N_E/./src/components/common/benchmark/utils/utils.ts","webpack://_N_E/./src/components/common/buttons/arrow-button.tsx","webpack://_N_E/./src/components/common/chart-shared-components/chart-loading-state.tsx","webpack://_N_E/./src/components/common/chart-shared-components/chart-no-data-state.tsx","webpack://_N_E/./src/components/common/hover-card.tsx","webpack://_N_E/./src/components/common/key-figure.tsx","webpack://_N_E/./src/components/common/module-headlines.tsx","webpack://_N_E/./src/components/common/scroll-snap.tsx","webpack://_N_E/./src/components/common/buttons/time-range-button/time-range-button.tsx","webpack://_N_E/./src/components/common/time-range-select/time-range-select.tsx","webpack://_N_E/./src/components/modules/components/wikifolio-info-card/wikifolio-info-card.tsx","webpack://_N_E/./src/components/modules/selected-wikifolios/selected-wikifolios-module.tsx","webpack://_N_E/./src/components/pages/detail/portfolio-chart/loading-state.tsx","webpack://_N_E/./src/components/pages/detail/portfolio-table-section/portfolio-table-util.tsx","webpack://_N_E/./src/components/pages/detail/shared/error-state.tsx","webpack://_N_E/./src/components/pages/detail/shared/hide-content.test-ids.ts","webpack://_N_E/./src/components/pages/detail/shared/hide-content.tsx","webpack://_N_E/./src/components/pages/detail/treemap-chart/constants.ts","webpack://_N_E/./src/components/pages/detail/treemap-chart/treemap-chart-skeleton.tsx","webpack://_N_E/./src/hooks/dom/use-auto-scrolling-list.tsx","webpack://_N_E/./src/hooks/dom/use-viewport-spy.ts","webpack://_N_E/./src/api/client/detail-page-activity.api.ts","webpack://_N_E/./src/api/client/leverage-products.api.ts","webpack://_N_E/./src/components/modals/leverage-products-modal/leverage-products-modal.tsx","webpack://_N_E/./src/components/modules/ad-module/ad-module.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/certificate-box.test-ids.ts","webpack://_N_E/./src/components/pages/detail/certificate-box/context.ts","webpack://_N_E/./src/components/pages/detail/certificate-box/hooks/use-certificate.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/details-accordion.test-ids.ts","webpack://_N_E/./src/components/pages/detail/certificate-box/components/details-accordion.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/header.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/label.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/invested-capital.tsx","webpack://_N_E/./src/api/client/wikifolio-price.api.ts","webpack://_N_E/./src/stores/detail-page-store.ts","webpack://_N_E/./src/components/pages/detail/certificate-box/components/prices.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/statistics.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/barred.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/closed.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/utils.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/ratio-tab-bar.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/closing-in-progress.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/in-test.tsx","webpack://_N_E/./src/api/client/savings-plan.api.ts","webpack://_N_E/./src/components/modals/savings-plan-modal/savings-plan-modal.test-ids.ts","webpack://_N_E/./src/components/modals/savings-plan-modal/savings-plan-modal.tsx","webpack://_N_E/./src/components/common/buttons/savings-plan-button/savings-plan-button.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/certificate.tsx","webpack://_N_E/./src/api/client/copy-isin-modal.api.ts","webpack://_N_E/./src/components/modals/copy-isin-modal/copy-isin-modal.test-ids.ts","webpack://_N_E/./src/components/modals/copy-isin-modal/copy-isin-modal.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/isin.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/investable.tsx","webpack://_N_E/./src/api/client/declare-interest.api.ts","webpack://_N_E/./src/components/modals/declare-interest-modal/declare-interest-modal.test-ids.ts","webpack://_N_E/./src/components/modals/declare-interest-modal/declare-interest-modal.tsx","webpack://_N_E/./src/components/common/buttons/declare-interest-button/declare-interest-button.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/not-licensed-all.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/not-licensed-single.tsx","webpack://_N_E/./src/components/base/wf-slider.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/components/progress-bar.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/variants/published.tsx","webpack://_N_E/./src/components/pages/detail/certificate-box/index.tsx","webpack://_N_E/./src/components/pages/detail/constants.ts","webpack://_N_E/./src/components/pages/detail/download-section.tsx","webpack://_N_E/./src/api/server/feed.types.ts","webpack://_N_E/./src/components/pages/detail/jump-marks/consts.ts","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-mark-anchor-refs-provider.tsx","webpack://_N_E/./src/components/pages/detail/feed/use-callback-on-visibility.tsx","webpack://_N_E/./src/components/pages/detail/feed/feed-section.tsx","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-mark-section.tsx","webpack://_N_E/./src/components/pages/detail/jump-marks/hooks/use-anchor-offset.ts","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-mark-tab.tsx","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-marks-bar.test-ids.ts","webpack://_N_E/./src/components/pages/detail/jump-marks/utils.ts","webpack://_N_E/./src/components/pages/detail/jump-marks/use-jump-to-section.ts","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-marks-bar.tsx","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-mark-anchor.tsx","webpack://_N_E/./src/components/pages/detail/key-figures/key-figure-group.tsx","webpack://_N_E/./src/components/pages/detail/key-figures/other-risk-indicators.tsx","webpack://_N_E/./src/components/pages/detail/key-figures/key-figures.tsx","webpack://_N_E/./src/api/client/feed-wikifolio-news.api.ts","webpack://_N_E/./src/components/pages/detail/news/news-list.tsx","webpack://_N_E/./src/components/pages/detail/news/news-list-skeleton.tsx","webpack://_N_E/./src/components/pages/detail/news/news-list-section.tsx","webpack://_N_E/./src/components/pages/detail/jump-marks/jump-mark-link.tsx","webpack://_N_E/./src/components/pages/detail/store/benchmark-ready-store.ts","webpack://_N_E/./src/components/pages/detail/portfolio-chart/portfolio-chart-wrapper.tsx","webpack://_N_E/./src/components/pages/detail/portfolio-table-section/loading-state.tsx","webpack://_N_E/./src/utils/compare-util.ts","webpack://_N_E/./src/components/pages/detail/portfolio-table-section/sort-utils.ts","webpack://_N_E/./src/components/pages/detail/portfolio-table-section/use-portfolio-table.ts","webpack://_N_E/./src/components/pages/detail/portfolio-table-section/portfolio-table.tsx","webpack://_N_E/./src/components/pages/detail/portfolio-table-section/portfolio-table-section.tsx","webpack://_N_E/./src/components/pages/detail/sales-section/sales-section.tsx","webpack://_N_E/./src/components/pages/detail/selected-wikifolios/index.tsx","webpack://_N_E/./src/components/pages/detail/tag-section.tsx","webpack://_N_E/./src/components/pages/detail/top-kpi/top-kpi.tsx","webpack://_N_E/./src/components/common/buttons/share/share-wikifolio-button.tsx","webpack://_N_E/./src/components/common/wf-tradername-profile-link.tsx","webpack://_N_E/./src/components/pages/detail/top-section.tsx","webpack://_N_E/./src/components/pages/detail/trade-history/loading-state.tsx","webpack://_N_E/./src/utils/date-util.ts","webpack://_N_E/./src/components/pages/detail/trade-history/time-span.tsx","webpack://_N_E/./src/api/client/trade-history.api.ts","webpack://_N_E/./src/components/pages/detail/trade-history/use-trade-history-table.tsx","webpack://_N_E/./src/components/pages/detail/trade-history/trade-history-section.tsx","webpack://_N_E/./src/components/pages/detail/trading-idea-section/investment-universe-group.tsx","webpack://_N_E/./src/components/pages/detail/trading-idea-section/investment-universe.tsx","webpack://_N_E/./src/components/pages/detail/trading-idea-section/master-data-item.tsx","webpack://_N_E/./src/components/pages/detail/trading-idea-section/master-data.tsx","webpack://_N_E/./src/components/pages/detail/trading-idea-section/trading-idea.tsx","webpack://_N_E/./src/components/pages/detail/trading-idea-section/index.tsx","webpack://_N_E/./src/utils/icon-html-string.ts","webpack://_N_E/./src/components/common/benchmark/chart-tooltip-style.ts","webpack://_N_E/./src/components/common/benchmark/chart.tsx","webpack://_N_E/./src/api/client/price-chart.api.ts","webpack://_N_E/./src/components/common/benchmark/hooks/use-benchmark-state.ts","webpack://_N_E/./src/components/common/benchmark/hooks/use-effect-chart-plotlines.ts","webpack://_N_E/./src/components/common/benchmark/hooks/use-wikifolio-close-price-chart.ts","webpack://_N_E/./src/components/common/benchmark/hooks/use-wikifolio-price-chart.ts","webpack://_N_E/./src/components/common/benchmark/wikifolio-detail-benchmark.tsx","webpack://_N_E/./src/components/pages/detail/wikifolio-detail-benchmark-wrapper.tsx","webpack://_N_E/./src/components/pages/detail/treemap-chart/treemap-chart-section.tsx","webpack://_N_E/./src/components/pages/detail/watchlist-cta/watchlist-cta.tsx","webpack://_N_E/./src/components/pages/detail/watchlist-cta/watchlist-cta-section.tsx","webpack://_N_E/./src/components/pages/detail/wf-detail-page.tsx","webpack://_N_E/./src/pages/[country]/w/[symbol].tsx","webpack://_N_E/./src/theme/hover-style.ts","webpack://_N_E/./src/utils/dom/scroll-util.ts","webpack://_N_E/./src/utils/dom/index.ts","webpack://_N_E/./src/utils/number-format-utils.ts","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/[country]/w/[symbol]\",\n function () {\n return require(\"private-next-pages/[country]/w/[symbol].tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/[country]/w/[symbol]\"])\n });\n }\n ","import { API_DETAIL_DOWNLOAD_URL } from \"src/consts/urls\";\nimport { useMutation } from \"src/hooks/react-query/use-mutation\";\nimport { EnumDownloadType } from \"src/types/common-enum\";\nimport { IErrorResponse } from \"./types\";\n\nexport enum EnumTimeRange {\n Today = 0,\n Last7Days = 1,\n Last30Days = 2,\n Last90Days = 3,\n YTD = 4,\n LastYear = 5,\n SinceEmission = 6,\n SinceCreation = 7,\n}\n\nexport interface IDownloadRequestParams {\n wikifolioId: string;\n type: EnumDownloadType;\n range?: EnumTimeRange | null;\n}\n\nexport function useDownloadMutation() {\n const { mutatePromise } = useMutation(API_DETAIL_DOWNLOAD_URL, {\n accept: \"text/csv\",\n });\n\n return mutatePromise;\n}\n","import { UseQueryOptions } from \"react-query\";\nimport { createApiWikifolioPortfolioUrl } from \"src/consts/urls\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\nimport { EnumIssuerType } from \"src/types/common-enum\";\n\nexport enum EnumAssetType {\n Stocks = 620,\n ETFs = 630,\n Derivatives = 640,\n Wikifolios = 650,\n Cash = 0,\n}\n\nexport interface IPortfolioItem {\n name: string;\n isin: string;\n quantity: number;\n bid: number;\n ask: number;\n averagePurchasePrice: number;\n isTicking: boolean;\n isLeveraged: boolean;\n isLtsuActive: boolean;\n link: string;\n close: number | null;\n issuer: EnumIssuerType | null;\n mid: number | null;\n openLinkInSameTab: boolean;\n percentage: number | null;\n partnerName: string;\n}\n\nexport interface IPortfolioGroup {\n items: IPortfolioItem[];\n type: EnumAssetType;\n value: number;\n percentage: number;\n}\n\nexport interface IPortfolioResponse {\n groups: IPortfolioGroup[];\n currency: string;\n isSuperWikifolio: boolean;\n totalValue: number | null;\n}\n\nexport const usePortfolioTableQuery = (fullName: string, options: UseQueryOptions) =>\n useQuery(createApiWikifolioPortfolioUrl(fullName), {\n // Dev-Note: we want to refetch data every 10 seconds for the portfolio table\n staleTime: 10_000,\n refetchInterval: 10_000,\n retry: 1,\n ...options,\n });\n","import { AxisPlotLinesOptions, ChartSelectionCallbackFunction, Options, SeriesOptionsType } from \"highcharts/highstock\";\nimport { TFunction } from \"next-i18next\";\nimport { DAY_IN_MS, MONTH_IN_MS, YEAR_IN_MS } from \"src/consts/time\";\nimport { IDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { INumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { getBenchmarkTooltip, getChartTooltip, IBenchmarkPoint, IChartPoint } from \"./utils/chart-util\";\n\nexport const getChartGlobalConfig = (t: TFunction, chartAriaLabel?: string) => ({\n lang: {\n accessibility: {\n svgContainerLabel: chartAriaLabel,\n chartContainerLabel: undefined,\n },\n decimalPoint: t(\"decimal-separator\"),\n thousandsSep: t(\"thousand-separator\"),\n months: [\n t(\"january\"),\n t(\"february\"),\n t(\"march\"),\n t(\"april\"),\n t(\"may\"),\n t(\"june\"),\n t(\"july\"),\n t(\"august\"),\n t(\"september\"),\n t(\"october\"),\n t(\"november\"),\n t(\"december\"),\n ],\n weekdays: [t(\"sunday\"), t(\"monday\"), t(\"tuesday\"), t(\"wednesday\"), t(\"thursday\"), t(\"friday\"), t(\"saturday\")],\n shortMonths: [t(\"jan\"), t(\"feb\"), t(\"mar\"), t(\"apr\"), t(\"may\"), t(\"jun\"), t(\"jul\"), t(\"aug\"), t(\"sep\"), t(\"oct\"), t(\"nov\"), t(\"dec\")],\n },\n});\n\ninterface IParam {\n gray200: string;\n gray500: string;\n gray800: string;\n series: SeriesOptionsType;\n onZoom: () => void;\n baseCurrency?: string;\n}\n\nexport interface IFormatters {\n dateTimeFormatter: IDateTimeFormatter;\n numberFormatter: INumberFormatter;\n}\n\nexport const getChartConfig = (formatters: IFormatters, { gray200, gray500, gray800, series, onZoom, baseCurrency }: IParam): Options => ({\n rangeSelector: { enabled: false },\n scrollbar: { enabled: false },\n navigator: { enabled: false },\n exporting: { enabled: false },\n title: { text: undefined },\n credits: { enabled: false },\n legend: { enabled: false },\n\n time: {\n useUTC: false,\n },\n chart: {\n spacing: [30, 5, 0, 5],\n // Make x axis zoomable\n zooming: {\n type: \"x\",\n },\n resetZoomButton: { theme: { style: { display: \"none\" } } },\n selectionMarkerFill: \"rgba(149, 193, 31, 0.16)\",\n events: {\n selection: onZoom as ChartSelectionCallbackFunction,\n },\n },\n xAxis: {\n type: \"datetime\",\n tickLength: 0,\n lineWidth: 0,\n labels: {\n y: 26,\n style: {\n color: gray500,\n fontSize: \"12px\",\n fontWeight: \"600\",\n },\n },\n dateTimeLabelFormats: {\n second: \"%H:%M:%S\",\n minute: \"%H:%M\",\n hour: \"%H:%M\",\n day: \"%e %b\",\n week: \"%e %b\",\n month: \"%b %y\",\n },\n crosshair: {\n label: {\n enabled: false,\n },\n dashStyle: \"Dot\",\n width: 2,\n color: gray800,\n },\n events: {\n setExtremes: function (extremes) {\n const minTickInterval = extremes.max - extremes.min >= DAY_IN_MS * 7 ? DAY_IN_MS : undefined;\n this.update({ minTickInterval });\n },\n },\n },\n yAxis: {\n title: { text: null },\n opposite: false,\n showLastLabel: true,\n gridLineColor: gray200,\n gridLineDashStyle: \"Dot\",\n gridLineWidth: 2,\n labels: {\n align: \"right\",\n x: -16,\n y: 3,\n style: {\n padding: \"0 40px 0 0\",\n color: gray500,\n fontSize: \"12px\",\n fontWeight: \"600\",\n },\n },\n },\n plotOptions: {\n line: {\n marker: {\n enabled: false,\n radius: 3,\n },\n accessibility: {\n descriptionFormat: \"\",\n },\n },\n series: {\n states: {\n hover: {\n lineWidthPlus: 0,\n },\n },\n connectNulls: true,\n turboThreshold: 0,\n accessibility: {\n descriptionFormat: \"\",\n },\n },\n },\n tooltip: {\n useHTML: true,\n borderWidth: 0,\n padding: 2,\n distance: 14,\n shadow: false,\n style: {\n color: \"white\",\n textAlign: \"center\",\n fill: \"transparent\",\n },\n headerFormat: \"\",\n shape: \"square\",\n split: true,\n pointFormatter: function () {\n if (this.series.chart.series.length === 1) {\n return getChartTooltip(formatters, this as unknown as IChartPoint, baseCurrency);\n }\n\n return getBenchmarkTooltip(formatters.numberFormatter, this as unknown as IBenchmarkPoint);\n },\n },\n series: [series],\n});\n\nexport const getWikifolioTimeRangeItems = (t: TFunction, isIntraDayDisabled: boolean) => {\n const perfSince = t(\"perf-since\");\n\n return [\n {\n value: DAY_IN_MS,\n label: t(\"range-1-d\"),\n labelLong: `${perfSince} ${t(\"range-1-d-long\")}`,\n isDisabled: isIntraDayDisabled,\n },\n {\n value: DAY_IN_MS * 7,\n label: t(\"range-7-d\"),\n labelLong: `${perfSince} ${t(\"range-7-d-long\")}`,\n },\n {\n value: MONTH_IN_MS,\n label: t(\"range-1-m\"),\n labelLong: `${perfSince} ${t(\"range-1-m-long\")}`,\n },\n {\n value: MONTH_IN_MS * 6,\n label: t(\"range-6-m\"),\n labelLong: `${perfSince} ${t(\"range-6-m-long\")}`,\n },\n {\n value: YEAR_IN_MS,\n label: t(\"range-1-y\"),\n labelLong: `${perfSince} ${t(\"range-1-y-long\")}`,\n },\n {\n value: YEAR_IN_MS * 3,\n label: t(\"range-3-y\"),\n labelLong: `${perfSince} ${t(\"range-3-y-long\")}`,\n },\n {\n value: YEAR_IN_MS * 5,\n label: t(\"range-5-y\"),\n labelLong: `${perfSince} ${t(\"range-5-y-long\")}`,\n },\n {\n value: Infinity,\n label: t(\"max\"),\n labelLong: t(\"perf-since-begin\"),\n },\n ];\n};\n\nexport const getUnderlyingsTimeRangeItems = (t: TFunction) => {\n const perfSince = t(\"perf-since\");\n\n return [\n {\n value: DAY_IN_MS,\n label: t(\"range-intraday\"),\n labelLong: `${t(\"range-intraday\")}`,\n },\n {\n value: DAY_IN_MS * 7,\n label: t(\"range-7-d\"),\n labelLong: `${perfSince} ${t(\"range-7-d-long\")}`,\n },\n {\n value: MONTH_IN_MS,\n label: t(\"range-1-m\"),\n labelLong: `${perfSince} ${t(\"range-1-m-long\")}`,\n },\n {\n value: MONTH_IN_MS * 6,\n label: t(\"range-6-m\"),\n labelLong: `${perfSince} ${t(\"range-6-m-long\")}`,\n },\n {\n value: YEAR_IN_MS,\n label: t(\"range-1-y\"),\n labelLong: `${perfSince} ${t(\"range-1-y-long\")}`,\n },\n {\n value: YEAR_IN_MS * 3,\n label: t(\"range-3-y\"),\n labelLong: `${perfSince} ${t(\"range-3-y-long\")}`,\n },\n {\n value: Infinity,\n label: t(\"max\"),\n labelLong: t(\"perf-since-begin\"),\n },\n ];\n};\n\nexport const DYNAMIC_BENCHMARK_COLORS = [\"gray\", \"blush\", \"pear\"];\n\nexport interface IBenchmarkIndexListStatic {\n isin: string;\n label: string;\n colorScheme: string;\n isSelectedByDefault?: boolean;\n}\n\nexport const defaultBenchmarkIndexList: IBenchmarkIndexListStatic[] = [\n {\n isin: \"DE0008469008\",\n label: \"DAX\",\n colorScheme: \"lilac\",\n },\n {\n isin: \"DE0008467416\",\n label: \"MDAX\",\n colorScheme: \"blue\",\n },\n {\n isin: \"DE0009653386\",\n label: \"SDAX\",\n colorScheme: \"orange\",\n },\n {\n isin: \"DE0008469602\",\n label: \"CDAX\",\n colorScheme: \"sky\",\n },\n {\n isin: \"EU0009658145\",\n label: \"EURO STOXX 50\",\n colorScheme: \"teal\",\n },\n {\n isin: \"US6311011026\",\n label: \"Nasdaq 100\",\n colorScheme: \"yellow\",\n },\n];\n\ninterface IPlotLineArgs {\n id: \"emission\" | \"publish\";\n timestamp: number;\n label: string;\n gray500: string;\n}\nexport const getPlotLineConfig = ({ id, timestamp, label, gray500 }: IPlotLineArgs): AxisPlotLinesOptions => ({\n id,\n dashStyle: \"Dot\",\n width: 2,\n color: gray500,\n value: timestamp,\n zIndex: 1,\n label: {\n text: label,\n style: {\n backgroundColor: gray500,\n padding: \"4px 8px\",\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n borderRadius: \"4px\" as any,\n color: \"white\",\n fontWeight: \"bold\",\n fontFamily: \"inherit\",\n },\n useHTML: true,\n rotation: 0,\n x: 8,\n y: id === \"emission\" ? 15 : 45,\n },\n});\n\nexport const CLASS_BENCHMARK_HEADER = \"wf-chart-header\";\nexport const getBenchmarkTooltipUpdateConfig = () => ({\n plotOptions: {\n series: {\n compareStart: true,\n },\n },\n tooltip: {\n split: true,\n headerFormat: `
{point.formattedDate}
`,\n },\n});\n\nexport const getBenchmarkTooltipResetConfig = () => ({\n plotOptions: {\n series: {\n compareStart: false,\n },\n },\n tooltip: {\n split: false,\n headerFormat: \"\",\n },\n});\n","import { Chart, PointOptionsObject, Series, SeriesLineOptions } from \"highcharts/highstock\";\nimport { IPriceIndexResponse } from \"src/api/client/price-chart.api\";\nimport { IFormatters } from \"src/components/common/benchmark/configs\";\nimport { IDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { INumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\n\nconst WIKI = \"wiki\";\n\nexport const toChartTicks = (formatter: IDateTimeFormatter, data: IPriceIndexResponse) => {\n return data.values.map((value, index) => {\n const date = new Date(data.timestamps[index]);\n const x = date.getTime();\n return {\n x: x,\n y: value,\n formattedDate: formatter.formatDateWithWeekday(x),\n // Comment from old code:\n // | Workaround to format 1440 ticks and 60/15 ticks separately\n // | WikifolioTickdataAggregated Duration = 1440 ticks have a BeginDate with the time set to 01:00 or 02:00\n showShortDateFormat: (date.getHours() === 1 || date.getHours() === 2) && date.getMinutes() === 0,\n };\n });\n};\n\nconst getChartSeries = (formatter: IDateTimeFormatter, id: string, color: string, data: IPriceIndexResponse): SeriesLineOptions => ({\n type: \"line\",\n id,\n name: id,\n lineWidth: 2,\n data: toChartTicks(formatter, data),\n color,\n marker: { symbol: \"circle\" },\n});\n\nexport const getWfPriceTick = (formatter: IDateTimeFormatter, color: string, data: IPriceIndexResponse) =>\n getChartSeries(formatter, WIKI, color, data);\nexport const getBenchmarkPriceTick = (formatter: IDateTimeFormatter, id: string, color: string, data: IPriceIndexResponse) =>\n getChartSeries(formatter, id, color, data);\n\nconst getChartTooltipDate = (formatter: IDateTimeFormatter, showShortDateFormat: boolean, dateInMilSec: number) => {\n if (showShortDateFormat) {\n return formatter.formatDateWithWeekday(dateInMilSec);\n } else {\n return formatter.formatDateTimeWithWeekday(dateInMilSec);\n }\n};\n\nexport const CLASS_BENCHMARK_TOOLTIP = \"benchmark-tooltip\";\nexport interface IBenchmarkPoint {\n color: string;\n series: { name: string };\n change: number;\n}\nexport const getBenchmarkTooltip = (numberFormatter: INumberFormatter, { color, series, change }: IBenchmarkPoint) => {\n let label = series.name;\n if (series.name === WIKI) {\n label = ``;\n }\n return `
\n ${label}${numberFormatter.formatPerformance(change / 100, 2)}\n
`;\n};\n\nexport interface IChartPoint {\n x: number;\n y: number;\n showShortDateFormat: boolean;\n}\nexport const CLASS_CHART_TOOLTIP = \"chart-tooltip\";\nexport const getChartTooltip = (\n { numberFormatter, dateTimeFormatter }: IFormatters,\n { x, y, showShortDateFormat }: IChartPoint,\n baseCurrency?: string\n) => {\n return `
\n ${baseCurrency} ${numberFormatter.formatNumber(y, 2)}\n
${getChartTooltipDate(dateTimeFormatter, showShortDateFormat, x)}
\n
`;\n};\n\nexport const removeUnselectedBenchmarkSeries = (series: Series[], selectedBenchmarks: Set) => {\n const unselectedBenchmarks: Series[] = [];\n series.forEach((item, index) => {\n if (index === 0) {\n // Wikifolio price series\n return;\n }\n if (!selectedBenchmarks.has(item.name)) {\n unselectedBenchmarks.push(item);\n }\n });\n unselectedBenchmarks.forEach(item => item.remove());\n};\n\nexport const mapBenchmarkNamesToBenchmarkSeries = (benchmarkNames: Set, benchmarkSeriesMap: Map) => {\n return Array.from(benchmarkNames)\n .map(benchmarkName => benchmarkSeriesMap.get(benchmarkName))\n .filter(series => Boolean(series)) as SeriesLineOptions[];\n};\n\nexport const getLastEmissionDateFromBenchmarkSeries = (series: SeriesLineOptions[], closePriceStartDate: number) =>\n series\n .reduce(\n (acc, b) => {\n const startDate: number | undefined = (b?.data as PointOptionsObject[])[0]?.x;\n if (startDate) {\n acc.push(startDate);\n }\n\n return acc;\n },\n [closePriceStartDate]\n )\n .sort((a, b) => b - a)[0];\n\nexport const drawChartSeries = (chart: Chart, seriesToDraw: SeriesLineOptions[], currentSeries: Series[], lastEmissionDate: number) => {\n seriesToDraw.forEach(benchmark => {\n if (!benchmark?.data) {\n return null;\n }\n\n // Replace series if lastEmissionDate is changed\n const activeBenchmark = currentSeries.find(b => b.name === benchmark.name);\n if (activeBenchmark?.data[0]?.x) {\n if (activeBenchmark.name === benchmark.name) {\n const activeBenchmarkEmissionDate = activeBenchmark.data[0].x;\n if (activeBenchmarkEmissionDate === lastEmissionDate) {\n return;\n }\n activeBenchmark.remove();\n }\n }\n\n const index = (benchmark.data as PointOptionsObject[]).findIndex(series => series.x === lastEmissionDate);\n if (index > 0) {\n // Add to chart series with modified length\n chart.addSeries({\n ...benchmark,\n data: benchmark.data.slice(index),\n });\n } else {\n chart.addSeries(benchmark);\n }\n });\n};\n","import { ISearchUnderlying, ISearchWikifolio } from \"src/api/client/search-autocomplete.api\";\nimport { IBenchmarkIndexListDynamic } from \"src/components/common/benchmark/hooks/use-benchmark-state\";\nimport { DYNAMIC_BENCHMARK_COLORS, IBenchmarkIndexListStatic } from \"../configs\";\n\nexport function isDynamicBenchmark(b: IBenchmarkIndexListDynamic | IBenchmarkIndexListStatic): b is IBenchmarkIndexListDynamic {\n return \"isDynamic\" in b && \"wikifolioId\" in b;\n}\n\nexport function isSearchWikifolio(w: ISearchWikifolio | ISearchUnderlying): w is ISearchWikifolio {\n return \"id\" in w;\n}\n\n/**\n * Resolves the color scheme for benchmark checkbox\n */\nexport const getColorScheme = (benchmarkListDynamic: IBenchmarkIndexListDynamic[]): string =>\n DYNAMIC_BENCHMARK_COLORS.reduce((acc, color) => {\n if (benchmarkListDynamic.length > 0 && benchmarkListDynamic.some(b => b.colorScheme === color)) {\n return acc;\n } else {\n return color;\n }\n }, DYNAMIC_BENCHMARK_COLORS[benchmarkListDynamic.length]);\n","import { IconButton, IconButtonProps } from \"@chakra-ui/react\";\nimport { IconArrowRight } from \"src/components/icons\";\n\nexport const ArrowButton = (props: IconButtonProps) => (\n }\n size=\"sm\"\n bg=\"white\"\n variant=\"outline\"\n borderColor=\"gray.200\"\n borderRadius=\"50%\"\n {...props}\n />\n);\n","import { Box, BoxProps, useToken } from \"@chakra-ui/react\";\nimport { FullSizeFlex } from \"src/components/base\";\n\ninterface IChartLoadingStateProps extends BoxProps {\n numberOfLines?: number;\n}\n\nexport const ChartLoadingState = ({ children, numberOfLines = 4, ...boxProps }: IChartLoadingStateProps) => {\n const [gray200] = useToken(\"colors\", [\"gray.200\"]);\n\n return (\n \n {[...Array.from({ length: numberOfLines })].map((_, index) => (\n \n ))}\n {children}\n \n );\n};\n","import { BoxProps, Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { FullSizeFlexCentered } from \"src/components/base\";\nimport { IconHidden } from \"src/components/icons\";\nimport { ChartLoadingState } from \"./chart-loading-state\";\n\ninterface IChartNoDataStateProps extends BoxProps {\n numberOfLines?: number;\n}\n\nexport const ChartNoDataState = ({ numberOfLines, ...boxProps }: IChartNoDataStateProps) => {\n const { t } = useTranslation(\"common\");\n\n return (\n \n \n \n \n {t(\"no-data\")}\n \n \n \n );\n};\n","import { chakra, Flex } from \"@chakra-ui/react\";\nimport { HOVER_STYLE } from \"src/theme/hover-style\";\n\nexport const HoverCard = chakra(Flex, {\n baseStyle: {\n display: \"flex\",\n p: 2,\n bg: \"white\",\n boxShadow: \"sm\",\n borderRadius: \"8px\",\n ...HOVER_STYLE,\n },\n});\n","import { Flex, FlexProps, Text } from \"@chakra-ui/react\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport Typography from \"src/theme/typography\";\nimport { ITooltip } from \"src/types/common\";\nimport { PopoverButtonIconInfo, WfPopover } from \"../base/wf-popover\";\nimport { RankingValue } from \"./ranking/ranking-value\";\nimport { EnumRankingType, IRankingData } from \"./ranking/types\";\n\nconst KEY_FIGURE_TEST_ID = \"key-figure\";\n\ninterface IKeyFigureProps extends FlexProps {\n ranking: IRankingData;\n value?: string;\n tooltip?: ITooltip | null;\n /* On true removes `- place` in EnumRankingType.RankingPlace */\n hidePoints?: boolean;\n rankingValueFontWeight?: keyof (typeof Typography)[\"fontWeights\"];\n}\n\nexport const KeyFigure = ({ ranking, value, tooltip, hidePoints, rankingValueFontWeight, ...flexProps }: IKeyFigureProps) => {\n const { formatDateShort } = useDateTimeFormatter();\n\n return (\n \n \n \n {ranking.label}\n {ranking.type === EnumRankingType.Performance && ranking?.creationDate && (\n \n {formatDateShort(ranking.creationDate)}\n \n )}\n \n {tooltip && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n","import { IFontSize, IWfHeadingProps, WfHeading } from \"src/components/base/wf-heading\";\n\nconst H1_FONT_SIZE: Array = [\"4xl\", \"4xl\", \"5xl\"];\nconst H2_FONT_SIZE: Array = [\"3xl\", \"3xl\", \"4xl\"];\nconst H3_FONT_SIZE: Array = [\"2xl\", \"2xl\", \"3xl\"];\n\nconst getTitleProps = (titleAsH2: boolean): IWfHeadingProps =>\n titleAsH2\n ? {\n as: \"h2\",\n fontSize: H2_FONT_SIZE,\n mb: [2, 3, 4],\n }\n : {\n as: \"h3\",\n fontSize: H3_FONT_SIZE,\n mb: [2, 2, 3],\n };\n\nconst getHeadlineProps = (titleAsH1: boolean): IWfHeadingProps =>\n titleAsH1\n ? {\n as: \"h1\",\n fontSize: H1_FONT_SIZE,\n }\n : {\n as: \"h2\",\n fontSize: H2_FONT_SIZE,\n };\n\ninterface IModuleHeadlineProps extends Omit {\n titleAsH1?: boolean;\n}\n\nexport const ModulePrimaryHeadline = ({ titleAsH1 = false, ...props }: IModuleHeadlineProps) => {\n return ;\n};\n\ninterface IModuleSecondaryHeadlineProps extends Omit {\n titleAsH2: boolean;\n}\n\nexport const ModuleSecondaryHeadline = ({ titleAsH2, ...props }: IModuleSecondaryHeadlineProps) => (\n \n);\n\ninterface IPrimaryHeadlineProps extends Omit {\n titleAsH1: boolean;\n}\nexport const PrimaryHeadline = ({ titleAsH1, ...props }: IPrimaryHeadlineProps) => ;\n","import { Box, BoxProps, Grid, GridProps } from \"@chakra-ui/react\";\n\nexport const SCROLL_SNAP_PROPS = {\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n msScrollSnapType: \"x mandatory\",\n scrollSnapType: \"x mandatory\",\n scrollBehavior: \"smooth\",\n};\n\nexport const ScrollSnap = ({ sx, ...gridProps }: GridProps) => {\n return (\n \n );\n};\n\nexport const ScrollSnapItem = ({ sx, ...boxProps }: BoxProps) => {\n return ;\n};\n","import { Button } from \"src/components/base/button\";\n\ninterface ITimeRangeButton {\n active: boolean;\n label: string;\n value: number;\n isDisabled: boolean;\n onClick: (value: number) => void;\n}\n\nexport const TimeRangeButton = ({ label, value, active, isDisabled, onClick }: ITimeRangeButton) =>\n active ? (\n \n {label}\n \n ) : (\n \n );\n","import { ChangeEvent } from \"react\";\nimport { BoxProps, HStack, Box } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { WfSelect } from \"src/components/base/wf-select\";\nimport { TimeRangeButton } from \"src/components/common/buttons/time-range-button/time-range-button\";\nimport { ITimeRangeSelectItem } from \"src/types/common\";\n\ninterface ITimeRangeSelectProps extends Omit {\n value: number;\n isDisabled?: boolean;\n onChange: (value: number) => void;\n items: ITimeRangeSelectItem[];\n}\n\nexport const TimeRangeSelect = ({ value, isDisabled, items, onChange, ...boxProps }: ITimeRangeSelectProps) => {\n const { t } = useTranslation(\"common\");\n\n const handleOnChange = (event: ChangeEvent) => {\n const value = event.target.value;\n const parsedValue = value === \"Infinity\" ? Infinity : isNaN(parseInt(value)) ? 0 : parseInt(value);\n onChange(parsedValue);\n };\n return (\n \n \n {items.map(item => (\n \n ))}\n \n \n {items.map(item => (\n \n ))}\n \n \n );\n};\n","import { Box, FlexProps, Text } from \"@chakra-ui/react\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { HoverCard } from \"src/components/common/hover-card\";\nimport { Ranking } from \"src/components/common/ranking/ranking\";\nimport { IRankingData } from \"src/components/common/ranking/types\";\nimport { TraderAvatar } from \"src/components/common/trader-avatar\";\nimport { useGetUserName } from \"src/hooks/use-get-user-name\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\nimport { ITrader, IUser, IWikifolio } from \"src/types/common\";\n\ntype IUserOrTrader = Pick | ITrader;\n\nexport interface IWikifolioInfoCardProps extends Pick {\n trader: IUserOrTrader;\n ranking: IRankingData;\n hidePoints?: boolean;\n}\n\n/**\n * WikifolioInfoCard component is responsible for displaying information about a single Wikifolio.\n * It takes various props to render details such as the Wikifolio's name, symbol, performance, and other relevant data.\n * The component is designed to be used within a list or grid of Wikifolio cards, providing a consistent and informative\n * presentation of each Wikifolio's key information.\n */\nexport const WikifolioInfoCard = ({ trader, ranking, symbol, hidePoints, shortDescription, ...flexProps }: IWikifolioInfoCardProps & FlexProps) => {\n const { buildWikifolioLink } = useLinkBuilder();\n const getUserName = useGetUserName();\n\n return (\n \n \n \n \n {shortDescription}\n \n \n {getUserName(trader)}\n \n \n \n \n );\n};\n","import { Box, FlexProps, HStack, Stack, Text, VStack } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { ArrowButton } from \"src/components/common/buttons/arrow-button\";\nimport { ModulePrimaryHeadline } from \"src/components/common/module-headlines\";\nimport { SCROLL_SNAP_PROPS } from \"src/components/common/scroll-snap\";\nimport { Container, CONTAINER_PX_SM_MD, CONTAINER_PX_SM_MD_NEGATIVE } from \"src/components/layout/container\";\nimport { SCROLL_DIRECTION, useAutoScrollingList } from \"src/hooks/dom/use-auto-scrolling-list\";\nimport { WikifolioInfoCard } from \"../components/wikifolio-info-card/wikifolio-info-card\";\nimport { ISelectedWikifolioData } from \"./selected-wikifolios-module.types\";\n\nconst CARD_WIDTH_SM_MD = [324, 450];\nconst CARD_WIDTH_LG = \"358px\";\n\nconst MAX_COLUMNS = 3;\n\nconst colorSchemeMap = {\n white: {\n bg: \"white\",\n },\n gray: {\n bg: \"gray.50\",\n },\n};\n\nexport interface ISelectedWikifolioColumn {\n title?: string;\n wikifolios: ISelectedWikifolioData[];\n}\n\nexport interface ISelectedWikifoliosModuleProps {\n title: string;\n wikifolioColumns: ISelectedWikifolioColumn[];\n description?: string;\n colorScheme?: keyof typeof colorSchemeMap;\n wfCardProps?: FlexProps;\n canCalculateScroll?: boolean;\n}\n\nexport const SelectedWikifoliosModule = ({\n title,\n description,\n wikifolioColumns,\n colorScheme = \"white\",\n wfCardProps,\n}: ISelectedWikifoliosModuleProps) => {\n const hasCardsWithTitle = wikifolioColumns.some(column => Boolean(column.title));\n const { t } = useTranslation(\"common\");\n\n const { canScrollPrev, canScrollNext, scrollContainerRef, collectItemRefs, handleScroll } = useAutoScrollingList();\n\n const hasNavButtonsLg = wikifolioColumns.length > MAX_COLUMNS;\n const isBgWhite = colorScheme === \"white\";\n const mbHeading = description ? 3 : 5;\n\n return (\n \n \n {title}\n {description && (\n \n {description}\n \n )}\n \n {wikifolioColumns.map((column, index) => {\n // Dev-Note: we need the adjustments for the last card because else there would be overflowing bugs in Safari\n const isLastCard = index === wikifolioColumns.length - 1;\n const isFirstCard = index === 0;\n\n return (\n collectItemRefs({ node, index })}\n key={index}\n spacing={2}\n w={[\"100%\", ...CARD_WIDTH_SM_MD.map(val => (isLastCard ? val + 6 : val)), CARD_WIDTH_LG]}\n pr={[0, isFirstCard ? 0 : 2, isLastCard ? 2 : 0, 0]}\n flexShrink={0}\n >\n {column.title && (\n \n {column.title}\n \n )}\n \n {column.wikifolios.map(wikifolio => (\n \n ))}\n \n \n );\n })}\n \n \n handleScroll(SCROLL_DIRECTION.PREV)}\n />\n handleScroll(SCROLL_DIRECTION.NEXT)} />\n \n \n \n );\n};\n","import { Box, SimpleGrid, Skeleton } from \"@chakra-ui/react\";\n\nexport const LoadingState = () => (\n \n \n \n {[1, 2, 3, 4].map(key => (\n \n ))}\n \n \n);\n","import { IPortfolioItem } from \"src/api/client/portfolio-table.api\";\n\nexport const getPerfSinceBuy = (item: IPortfolioItem) => (item.bid && item.averagePurchasePrice ? item.bid / item.averagePurchasePrice - 1 : null);\n\nexport const getPerfToday = (item: IPortfolioItem) => (item.mid && item.close ? (item.mid - item.close) / item.close : null);\n","import { ReactNode } from \"react\";\nimport { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { FullSizeFlexCentered } from \"src/components/base\";\nimport { IconHidden } from \"src/components/icons\";\n\ninterface IErrorStateProps {\n children?: ReactNode;\n}\n\nexport const ErrorState = ({ children }: IErrorStateProps) => {\n const { t } = useTranslation(\"common\");\n\n return (\n \n {children}\n \n \n \n \n {t(\"no-data\")}\n \n \n \n \n );\n};\n","export const HIDE_CONTENT_TEST_ID = \"hide-content\";\n","// eslint-disable-next-line no-restricted-imports\nimport { useRef } from \"react\";\nimport { Text, Flex, Box } from \"@chakra-ui/react\";\nimport Image from \"next/legacy/image\";\nimport { useTranslation } from \"next-i18next\";\nimport { useDownloadMutation } from \"src/api/client/detail-page-download.api\";\nimport { Section, SectionProps, Span } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { HashLinkUnstyled } from \"src/components/base/hash-link\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { IconHidden } from \"src/components/icons\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\nimport { EnumToastStatus, useWfToast } from \"src/hooks/use-wf-toast\";\nimport { EnumDownloadType } from \"src/types/common-enum\";\nimport { HIDE_CONTENT_TEST_ID } from \"./hide-content.test-ids\";\n\ninterface IHideContentProps extends SectionProps {\n height: string | string[];\n imageSrc?: string;\n headline: string;\n description: string;\n wikifolioId?: string;\n}\n\nexport const HideContent = ({ imageSrc, height, headline, description, wikifolioId, ...sectionProps }: IHideContentProps) => {\n const { buildLoginModalLink, buildRegisterModalLink } = useLinkBuilder();\n const toast = useWfToast();\n const toastVisible = useRef(false);\n const downloadMutation = useDownloadMutation();\n const { t } = useTranslation(\"common\");\n\n const onError = (title: string) => {\n if (!toastVisible.current) {\n toastVisible.current = true;\n toast({ status: EnumToastStatus.Error, duration: 5000, title: title });\n setTimeout(() => {\n toastVisible.current = false;\n }, 5000);\n }\n };\n\n const onDownloadClick = async () => {\n try {\n await downloadMutation({\n wikifolioId: wikifolioId ?? \"\",\n type: EnumDownloadType.Portfolio,\n });\n } catch (error) {\n onError(t(\"general-error\"));\n }\n };\n\n return (\n
\n \n {imageSrc && (\n \n \"blank\"\n \n )}\n \n \n \n \n {headline}\n \n \n {description}\n \n \n \n \n \n \n {wikifolioId && (\n \n \n {t(\"portfolio-download-text\")}\n \n {t(\"portfolio-download-link-text\")}\n \n .\n \n \n )}\n \n \n
\n );\n};\n","export const CHART_HEIGHT = \"511px\";\n","import { HStack, Skeleton, VStack } from \"@chakra-ui/react\";\nimport { CHART_HEIGHT } from \"./constants\";\n\nexport const TreemapChartSkeleton = ({ ...boxProps }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useRef, useEffect, useCallback, useState } from \"react\";\nimport { useBreakpointValue } from \"@chakra-ui/react\";\nimport debounce from \"lodash.debounce\";\n\nexport const SCROLL_DIRECTION = {\n PREV: \"prev\",\n NEXT: \"next\",\n} as const;\n\nexport type TScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\n/**\n * Custom hook for managing horizontal scrolling behavior in a list of elements.\n * This hook provides functionality to:\n * - Track whether the container can scroll to the previous or next item\n * - Detect if the container has overflow content\n * - Handle smooth scrolling to the next or previous item\n * - Attach and manage scroll event listeners with debouncing\n * - Disable scrolling functionality based on breakpoints\n */\n\ninterface IAutoScrollingListParams {\n /**\n * Array of boolean values that control when scrolling should be disabled\n * based on specific breakpoints (mobile, tablet, desktop, etc.).\n * Each value corresponds to a breakpoint in ascending order.\n * @example [true, false, false] - disabled on mobile, enabled on tablet and desktop\n */\n disableOnBreakpoint?: boolean[];\n}\nexport const useAutoScrollingList = ({ disableOnBreakpoint = [false] }: IAutoScrollingListParams = {}) => {\n const [canScrollPrev, setCanScrollPrev] = useState(false);\n const [canScrollNext, setCanScrollNext] = useState(true);\n const [isOverflow, setIsOverflow] = useState(false);\n\n const itemRefs = useRef>(new Map());\n const scrollContainerRef = useRef(null);\n const isDisabled = useBreakpointValue(disableOnBreakpoint);\n\n const collectItemRefs = useCallback(({ node, index }: { node: HTMLDivElement | null; index: number }) => {\n if (node && !itemRefs.current.has(index)) {\n itemRefs.current.set(index, node);\n }\n }, []);\n\n const updateButtonsState = useCallback(() => {\n if (!scrollContainerRef.current || isDisabled) {\n return;\n }\n\n const { scrollLeft, scrollWidth, clientWidth } = scrollContainerRef.current;\n setCanScrollPrev(scrollLeft > 0);\n setCanScrollNext(scrollLeft + clientWidth < scrollWidth);\n setIsOverflow(scrollWidth > clientWidth);\n }, [isDisabled]);\n\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (container) {\n const debouncedUpdate = debounce(updateButtonsState, 50);\n container.addEventListener(\"scroll\", debouncedUpdate);\n updateButtonsState();\n\n return () => container.removeEventListener(\"scroll\", debouncedUpdate);\n }\n }, [updateButtonsState]);\n\n const handleScroll = useCallback(\n (direction: TScrollDirection): void => {\n if (!scrollContainerRef.current || isDisabled) {\n return;\n }\n\n const container = scrollContainerRef.current;\n const items = Array.from(itemRefs.current.values()).filter(Boolean);\n\n const visibleItemIndex = items.findIndex(item => item && item.getBoundingClientRect().left >= container.getBoundingClientRect().left);\n\n const targetIndex =\n direction === SCROLL_DIRECTION.NEXT ? Math.min(visibleItemIndex + 1, items.length - 1) : Math.max(visibleItemIndex - 1, 0);\n\n const targetItem = items[targetIndex];\n if (targetItem) {\n const containerStyle = window.getComputedStyle(container);\n const padding = parseInt(direction === SCROLL_DIRECTION.NEXT ? containerStyle.paddingRight : containerStyle.paddingLeft, 10);\n\n container.scrollTo({\n left: targetItem.offsetLeft - container.offsetLeft - padding,\n behavior: \"smooth\",\n });\n }\n },\n [isDisabled]\n );\n\n return {\n scrollContainerRef,\n itemRefs,\n canScrollPrev,\n canScrollNext,\n isOverflow,\n handleScroll,\n collectItemRefs,\n };\n};\n","import { RefObject, useEffect, useState } from \"react\";\n\ninterface IViewportSpy extends Pick {\n visibleOnce?: boolean;\n onIntersecting?: (isIntersecting: boolean) => void;\n}\n\nconst defaultOptions: IViewportSpy = {\n rootMargin: \"0px\",\n threshold: 0,\n visibleOnce: false,\n};\n\n/*\n Disclaimer:\n This hooks is a part of the 'beautiful-react-hooks' lib.\n Since it was not possible to only import this specific hook from the lib,\n we extracted it in our code base with small adaption\n\n See source code: https://github.com/antonioru/beautiful-react-hooks/blob/master/src/useViewportSpy.ts\n*/\n\n/**\n * Uses the IntersectionObserverMock API to tell whether the given DOM Element (from useRef) is visible within the\n * viewport.\n */\nconst useViewportSpy = (elementRef: RefObject, options: IViewportSpy = defaultOptions) => {\n const [isVisible, setIsVisible] = useState(false);\n const { visibleOnce, threshold, rootMargin, onIntersecting } = options;\n\n useEffect(() => {\n if (!elementRef.current || (isVisible && visibleOnce)) {\n return;\n }\n\n const observer = new window.IntersectionObserver(\n entries =>\n entries.forEach(item => {\n onIntersecting?.(item.isIntersecting);\n setIsVisible(item.isIntersecting);\n }),\n {\n threshold,\n rootMargin,\n }\n );\n observer.observe(elementRef.current);\n\n return () => observer.disconnect();\n }, [elementRef, isVisible, rootMargin, threshold, visibleOnce, onIntersecting]);\n\n return isVisible;\n};\n\nexport default useViewportSpy;\n","import { createVisitDetailPageActivityUrl } from \"src/consts/urls\";\nimport { useMutation } from \"src/hooks/react-query/use-mutation\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\n\ninterface IRequest {\n parameter?: string | null;\n referrer?: string | null;\n}\n\nexport const useDetailPageActivityMutation = () => {\n const { language, country } = useRouterLocale();\n const { mutatePromise } = useMutation(createVisitDetailPageActivityUrl(language, country));\n\n return mutatePromise;\n};\n","import { UseQueryOptions } from \"react-query\";\nimport { createApiLeverageProductContentUrl, API_DISABLE_LEVERAGE_PRODUCTS_DISCLAMER_URL } from \"src/consts/urls\";\nimport { useMutation } from \"src/hooks/react-query/use-mutation\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\n\nexport interface ILeverageProductsResponse {\n message: string;\n redirectUrl: string;\n}\n\nexport function useLeverageProductsQuery(options?: UseQueryOptions) {\n const { language, country } = useRouterLocale();\n\n return useQuery(createApiLeverageProductContentUrl(country, language), {\n ...options,\n });\n}\n\ninterface IRequestDisableLeverageProducts {\n onError: (error: unknown, variables: unknown, context: unknown) => void | Promise;\n}\n\nexport function useDisableLeverageProductsMutation(options?: IRequestDisableLeverageProducts) {\n const { mutate } = useMutation(API_DISABLE_LEVERAGE_PRODUCTS_DISCLAMER_URL, {\n ...options,\n method: \"PUT\",\n });\n return () => mutate({});\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport {\n Checkbox,\n Modal,\n ModalBody,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Stack,\n useDisclosure,\n UseDisclosureReturn,\n} from \"@chakra-ui/react\";\nimport Cookies from \"js-cookie\";\nimport { useTranslation } from \"next-i18next\";\nimport { ILeverageProductsResponse, useDisableLeverageProductsMutation, useLeverageProductsQuery } from \"src/api/client/leverage-products.api\";\nimport { Button } from \"src/components/base/button\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { SimpleRichText } from \"src/components/common/rich-text/simple-rich-text\";\nimport { useCookieBotConsentReady } from \"src/hooks/cookie-bot/use-cookie-bot-consent-ready\";\nimport { useFirstInteraction } from \"src/hooks/use-first-interaction\";\nimport { useWfToast, EnumToastStatus } from \"src/hooks/use-wf-toast\";\nimport { useDisclaimerStore } from \"src/stores/disclaimer-store\";\nimport { isServerSide } from \"src/utils/common-util\";\nimport { logger } from \"src/utils/logger-util\";\n\nconst FAILED_DISABLE_DISCLAMER_ERROR_MESSAGE = \"Failed to disable leverage products disclaimer\";\n\ninterface ILeverageProductsModalProps {\n containsLeverageProducts: boolean;\n}\n\nexport const LeverageProductsModal = ({ containsLeverageProducts }: ILeverageProductsModalProps) => {\n const disclaimerStore = useDisclaimerStore();\n const isCookieBotConsentReady = useCookieBotConsentReady();\n const modalProps = useDisclosure();\n const { t } = useTranslation(\"common\");\n const toast = useWfToast();\n\n const { onOpen } = modalProps;\n\n useEffect(() => {\n if (modalProps.isOpen && !disclaimerStore.showDisclaimer) {\n onOpen();\n }\n }, [onOpen, modalProps.isOpen, disclaimerStore.showDisclaimer]);\n\n const { data, isLoading, isError } = useLeverageProductsQuery({\n enabled: modalProps.isOpen,\n onError: () => {\n toast({ status: EnumToastStatus.Error, title: t(\"general-error\") });\n modalProps.onClose();\n },\n });\n\n const handleOnFirstInteraction = useCallback(() => {\n // the leveraged products disclaimer should only be shown after the first user interaction\n onOpen();\n }, [onOpen]);\n\n useFirstInteraction({\n // we don't even listen for the first user interaction if we know that the disclaimer doesn't need to be shown anyway\n isDisabled: !containsLeverageProducts || isServerSide() || Cookies.get(\"_lvrg_wrn\") === \"False\" || !isCookieBotConsentReady,\n onFirstInteraction: handleOnFirstInteraction,\n });\n\n if (!modalProps.isOpen || isLoading || isError || !data) {\n return null;\n }\n\n return ;\n};\n\ninterface IContentProps extends UseDisclosureReturn {\n responseData: ILeverageProductsResponse;\n}\n\nexport const LeverageProductsModalContent = ({ responseData, ...modalProps }: IContentProps) => {\n const { t } = useTranslation(\"common\");\n const disableLeverageProductsDisclaimer = useDisableLeverageProductsMutation({\n onError: error => {\n logger.error({ message: FAILED_DISABLE_DISCLAMER_ERROR_MESSAGE, error });\n },\n });\n\n const [isLoading, setLoading] = useState(false);\n const [dontShowAgain, setDontShowAgain] = useState(false);\n\n const onAcceptClick = () => {\n setLoading(true);\n\n if (dontShowAgain) {\n disableLeverageProductsDisclaimer();\n }\n\n modalProps.onClose();\n };\n\n return (\n \n \n \n \n {t(\"important-notice\")}\n \n \n \n setDontShowAgain(e.target.checked)}>\n {t(\"dont-show-notice\")}\n \n \n \n \n \n setLoading(true)}\n variant=\"outline\"\n >\n {t(\"search-wikifolios\")}\n \n \n \n \n \n );\n};\n","import { AspectRatio, Flex, Text } from \"@chakra-ui/react\";\nimport { useGenericActivityFromElysiumMutation } from \"src/api/client/generic-activity-from-elysium.api\";\nimport { EnumActivityType } from \"src/api/client/generic-activity.api\";\nimport { ArrowLink } from \"src/components/base/arrow-link\";\nimport { ResponsiveImage } from \"src/components/base/responsive-image\";\nimport { IImage, ILink } from \"src/types/common\";\nimport { triggerCallbackOnMiddleClickEvent } from \"src/utils/dom/mouse-util\";\n\nconst AD_MODULE_TEST_ID = \"ad-module\";\n\nexport interface IAdProps {\n headline: string;\n description: string;\n link: ILink;\n nodeId: number;\n image?: IImage;\n}\n\nexport const Ad = (props: IAdProps) => {\n const { headline, description, link, nodeId, image } = props;\n const genericActivity = useGenericActivityFromElysiumMutation();\n\n const onLinkClick = () => {\n genericActivity({\n activityTypeId: EnumActivityType.AdClicked,\n parameter: JSON.stringify({ nodeId, targetUrl: link.url }),\n referrer: window.location.href,\n });\n };\n\n return (\n \n {image && (\n \n \n \n )}\n \n {headline}\n \n \n {description}\n \n \n {link.name}\n \n \n );\n};\n","export const CERTIFICATE_BOX_TEST_ID = \"certificate-box\";\n","import { createContext, useContext } from \"react\";\nimport { ICertificateData, ICertificateDict, IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\n\nexport type ICertificateBoxData = IWikifolioDetailProps[\"data\"];\n\ntype CertificateBoxState = {\n dict: ICertificateDict;\n data: ICertificateBoxData;\n selectedCertificate: ICertificateData;\n updateSelectedCertificate: (isin: string) => void;\n};\n\nconst CertificateBoxContext = createContext(null);\n\nexport const CertificateBoxProvider = CertificateBoxContext.Provider;\n\nexport const useCertificateBoxContext = () => useContext(CertificateBoxContext)!;\n","import { useState, startTransition } from \"react\";\nimport { useRouter } from \"next/router\";\nimport { ICertificateData } from \"src/api/server/wf-detail.types\";\n\nexport const useCertificate = (certificates: ReadonlyArray) => {\n const router = useRouter();\n const querySearchTerm = router.query.searchTerm ?? router.query.isin;\n const searchTerm = (typeof querySearchTerm === \"string\" ? querySearchTerm : querySearchTerm?.[0])?.trim().toUpperCase();\n\n const getCertificate = (isin?: string) => getCertificateByIsin(isin) ?? getFirstLicensedCertificate() ?? getFirstOrDefaultCertificate();\n const getCertificateByIsin = (isin?: string) => certificates.find(certificate => certificate.isin === isin);\n const getFirstLicensedCertificate = () => certificates.find(certificate => certificate.isLicensed);\n const getFirstOrDefaultCertificate = () => (certificates.length ? certificates[0] : ({} as ICertificateData));\n\n const [selectedCertificate, setSelectedCertificate] = useState(getCertificate(searchTerm));\n\n const updateSelectedCertificate = (isin: string) => {\n startTransition(() => {\n setSelectedCertificate(getCertificate(isin));\n });\n };\n\n return {\n selectedCertificate,\n updateSelectedCertificate,\n };\n};\n","export const DETAILS_ACCORDION_SHOW_BUTTON_TEST_ID = \"details-accordion-show-button\";\n","import { PropsWithChildren } from \"react\";\nimport { Flex, useBreakpointValue, useDisclosure } from \"@chakra-ui/react\";\nimport { AnimatePresence, Variants } from \"motion/react\";\nimport { MotionBox } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { IconCaret } from \"src/components/icons\";\nimport { useCertificateBoxContext } from \"../context\";\nimport { DETAILS_ACCORDION_SHOW_BUTTON_TEST_ID } from \"./details-accordion.test-ids\";\n\nconst buttonVariants: Variants = {\n visible: {\n height: \"40px\",\n opacity: 1,\n },\n hidden: {\n height: \"0px\",\n opacity: 0,\n },\n};\n\nconst childVariants: Variants = {\n open: {\n height: \"auto\",\n },\n closed: {\n height: \"0px\",\n },\n};\n\nexport const CBDetailsAccordion = ({ children }: PropsWithChildren) => {\n const { dict } = useCertificateBoxContext();\n let isDesktop = useBreakpointValue([false, false, true], { fallback: \"md\" });\n if (typeof isDesktop === \"undefined\") {\n isDesktop = true;\n }\n\n const _detailsState = useDisclosure();\n const state = {\n ..._detailsState,\n isOpen: isDesktop || _detailsState.isOpen,\n isDesktop,\n };\n\n // Requirement: if the accordion was opened manually once, the user can't close it again\n const showButton = !state.isDesktop && !state.isOpen;\n\n return (\n \n \n {showButton && (\n \n }\n onClick={state.onToggle}\n data-test-id={DETAILS_ACCORDION_SHOW_BUTTON_TEST_ID}\n >\n {dict.show}\n \n \n )}\n \n \n {state.isOpen && (\n \n {children}\n \n )}\n \n \n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { useCertificateBoxContext } from \"../context\";\n\nexport const CBHeader = () => {\n const { data } = useCertificateBoxContext();\n const { t } = useTranslation(\"wf-detail\");\n\n const wikifolioCertificateHeadline = data.certificates.length > 1 ? t(\"headlines.wikifolio-certificates\") : t(\"headlines.wikifolio-certificate\");\n\n return (\n \n {wikifolioCertificateHeadline}\n \n );\n};\n","import { Flex, FlexProps } from \"@chakra-ui/react\";\n\nexport const CBLabel = (props: FlexProps) => ;\n","import { Box, Divider, Text } from \"@chakra-ui/react\";\nimport { WfPopover, PopoverButtonIconInfo } from \"src/components/base/wf-popover\";\nimport { getGlobals } from \"src/consts/globals\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { useCertificateBoxContext } from \"../context\";\nimport { CBLabel } from \"./label\";\n\nconst CERTIFICATE_BOX_INVESTED_CAPITAL_TEST_ID = \"certificate-box-invested-capital\";\n\nexport const CBInvestedCapital = () => {\n const { data } = useCertificateBoxContext();\n const { formatNumber } = useNumberFormatter();\n\n const totalInvestments = `${getGlobals().currency} ${\n data.keyFigures.totalInvestments.ranking.value ? formatNumber(data.keyFigures.totalInvestments.ranking.value) : 0\n }`;\n\n const { label } = data.keyFigures.totalInvestments.ranking;\n\n return (\n <>\n \n \n {label}\n \n \n \n \n {totalInvestments}\n \n \n \n );\n};\n","import { createApiWikifolioPriceUrl } from \"src/consts/urls\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\n\nexport interface IPriceResponse {\n id: string;\n bid: number | null;\n ask: number | null;\n midPrice: number | null;\n isTicking: boolean;\n showMidPrice: boolean;\n calculationDate: string;\n validUntilDate: string;\n wikifolioId: string | null;\n isin: string | null;\n instrument: string | null;\n currency: string | null;\n isCurrencyConverted: boolean;\n quantityLimitBid: number;\n quantityLimitAsk: number;\n}\n\nexport function useWikifolioPriceQuery(wikifolioId: string, nonPrimaryIsin?: string, retry = 0) {\n const queryParams = new URLSearchParams();\n if (nonPrimaryIsin) {\n queryParams.set(\"nonPrimaryIsin\", nonPrimaryIsin);\n }\n return useQuery(createApiWikifolioPriceUrl(wikifolioId), { queryParams, retry: retry });\n}\n","import { proxy, useSnapshot } from \"valtio\";\n\nexport interface IDetailPageStore {\n indexLevel: number;\n}\n\nexport const detailPageStore = proxy({\n indexLevel: 0,\n\n setIndexLevel(indexLevel: number) {\n detailPageStore.indexLevel = indexLevel;\n },\n});\n\nexport function useDetailPageStore() {\n return useSnapshot(detailPageStore);\n}\n","import { useEffect, ReactNode, startTransition } from \"react\";\nimport { Box, Flex, Divider, HStack, Skeleton, StackDivider, Text, VStack } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IPriceResponse, useWikifolioPriceQuery } from \"src/api/client/wikifolio-price.api\";\nimport { PopoverButtonIconInfo, WfPopover } from \"src/components/base/wf-popover\";\nimport { getGlobals } from \"src/consts/globals\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { useDetailPageStore } from \"src/stores/detail-page-store\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst CERTIFICATE_BOX_MID_PRICE_TEST_ID = \"certificate-box-mid-price\";\nconst CERTIFICATE_BOX_BID_PRICE_TEST_ID = \"certificate-box-bid-price\";\nconst CERTIFICATE_BOX_ASK_PRICE_TEST_ID = \"certificate-box-ask-price\";\nconst CERTIFICATE_BOX_PRICE_INFO_TEST_ID = \"certificate-box-price-info\";\n\n// on Desktop we want to have a fixes size so we can calculate the height even if no data has been loaded yet\nconst PRICES_CONTAINER_HEIGHT = [\"auto\", \"auto\", \"88px\"];\n\ninterface IPriceProps {\n label: string;\n value?: number | null;\n isLoading: boolean;\n fontSize?: string;\n}\n\nconst Price = ({ value, label, isLoading, fontSize, ...boxProps }: IPriceProps) => {\n const { formatNumber } = useNumberFormatter();\n\n let renderValue: ReactNode = ;\n if (!isLoading) {\n renderValue = (\n \n {value ? formatNumber(value, 2) : \"-\"}\n \n );\n }\n\n return (\n \n {renderValue}\n \n {label}\n \n \n );\n};\n\n// depending on how large the ask or big price is, we calculate the font size so that it fits into the UI\nfunction getAskBidFontSize(ask: number, bid: number) {\n const maxValue = Math.max(ask, bid);\n\n let fontSize = \"2xl\";\n if (maxValue >= 1000000) {\n fontSize = \"lg\";\n } else if (maxValue >= 10000) {\n fontSize = \"xl\";\n }\n return fontSize;\n}\n\nfunction getFormattedPriceData(isLoading: boolean, priceData: IPriceResponse | undefined) {\n if (isLoading) {\n return {\n showMidPrice: false,\n isTicking: true,\n };\n }\n\n const { ask, bid, midPrice, isTicking: _isTicking, showMidPrice, calculationDate: _calcDate, isCurrencyConverted } = priceData!;\n\n let isTicking = true;\n if (!midPrice && !_isTicking) {\n isTicking = false;\n }\n\n return {\n ask,\n bid,\n midPrice,\n showMidPrice,\n calculationDate: new Date(_calcDate),\n isTicking,\n isCurrencyConverted,\n };\n}\n\nfunction calculateIndexLevel(bid: number, ask: number, exchangeRatioMultiplier: number): number {\n return (bid + ask) / 2.0 / exchangeRatioMultiplier;\n}\n\nexport const CBPrices = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const { setIndexLevel } = useDetailPageStore();\n const exchangeRatioMultiplier = certificate.exchangeRatioMultiplier;\n const nonPrimaryIsin = certificate.isPrimary ? \"\" : certificate.isin;\n const numOfRetries = 3;\n\n const { data: priceData, isError, isLoading } = useWikifolioPriceQuery(data.wikifolio.id, nonPrimaryIsin, numOfRetries);\n const { t } = useTranslation(\"wf-detail\");\n const { formatDateShort, formatTimeShort } = useDateTimeFormatter();\n const { isTicking, bid, ask, calculationDate, showMidPrice, midPrice, isCurrencyConverted } = getFormattedPriceData(isLoading, priceData);\n\n useEffect(() => {\n if (bid && ask && exchangeRatioMultiplier) {\n startTransition(() => {\n setIndexLevel(calculateIndexLevel(bid, ask, exchangeRatioMultiplier));\n });\n }\n }, [bid, ask, exchangeRatioMultiplier, setIndexLevel]);\n\n if ((!isLoading && !priceData) || isError) {\n return ;\n }\n\n if (!isTicking) {\n return ;\n }\n\n const askBidFontSize = getAskBidFontSize(ask || 0, bid || 0);\n\n return (\n \n {showMidPrice ? (\n \n ) : (\n } w=\"100%\">\n \n \n \n )}\n \n \n {isLoading ? (\n \n ) : (\n t(\"prices-per-xat-y\", { 0: formatDateShort(calculationDate!), 1: formatTimeShort(calculationDate!) })\n )}\n \n in {getGlobals().currency}\n \n {!isLoading && isCurrencyConverted && (\n \n \n \n )}\n \n \n );\n};\n\nexport const CBPricesNotTicking = () => {\n const { t } = useTranslation(\"wf-detail\");\n return (\n \n {t(\"certificate.currently-no-price-available\")}\n \n \n );\n};\n","import { ReactNode } from \"react\";\nimport { Flex, Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { WfPopover, PopoverButtonIconInfo } from \"src/components/base/wf-popover\";\nimport { getGlobals } from \"src/consts/globals\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { ITooltip } from \"src/types/common\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst CERTIFICATE_BOX_STATISTIC_TEST_ID = \"certificate-box-statistic\";\n\ninterface ICBStatisticProps {\n label: string;\n value: ReactNode;\n tooltip: ITooltip;\n}\n\nconst CBStatistic = ({ label, tooltip, value }: ICBStatisticProps) => (\n \n \n {label}\n \n \n \n \n {value}\n \n);\n\nexport const CBEmission = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const { formatDateShort } = useDateTimeFormatter();\n\n return (\n \n );\n};\n\nexport const CBCertificateFee = () => {\n const { dict, data } = useCertificateBoxContext();\n const { formatPercent } = useNumberFormatter();\n\n return (\n \n );\n};\n\nexport const CBPerformanceFee = () => {\n const { dict, data } = useCertificateBoxContext();\n const { formatPercent } = useNumberFormatter();\n\n return (\n \n );\n};\n\nexport const CBLiquidationFigure = () => {\n const { data } = useCertificateBoxContext();\n const { t } = useTranslation(\"wf-detail\");\n const { formatNumber } = useNumberFormatter();\n\n let liquidationFigure = \"-\";\n if (data.keyFigures.liquidationFigure.ranking.value) {\n liquidationFigure = formatNumber(data.keyFigures.liquidationFigure.ranking.value, 1) + \" \" + t(\"days\");\n }\n\n return (\n \n );\n};\n\nexport const CBTradingVolume = () => {\n const { data } = useCertificateBoxContext();\n const { formatNumber } = useNumberFormatter();\n\n let tradingVolume = \"-\";\n if (data.keyFigures.tradingVolume.ranking.value) {\n tradingVolume = `${getGlobals().currency} ${formatNumber(data.keyFigures.tradingVolume.ranking.value)}`;\n }\n\n return ;\n};\n\nexport const CBExchangeRatio = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const { formatNumber } = useNumberFormatter();\n\n const ratio = `1 : ${formatNumber(certificate.exchangeRatioMultiplier)}`;\n\n return ;\n};\n","import { Text, VStack } from \"@chakra-ui/react\";\nimport { IconClosed } from \"src/components/icons\";\nimport { CBDetailsAccordion } from \"../components/details-accordion\";\nimport { CBHeader } from \"../components/header\";\nimport { CBInvestedCapital } from \"../components/invested-capital\";\nimport { CBPricesNotTicking } from \"../components/prices\";\nimport { CBCertificateFee, CBExchangeRatio, CBEmission, CBLiquidationFigure, CBPerformanceFee, CBTradingVolume } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst BARRED_MESSAGE_TEST_ID = \"barred-message\";\n\nexport const CertificateBoxBarred = () => {\n const { dict, selectedCertificate: certificate } = useCertificateBoxContext();\n const isHiddenCertificate = certificate.isHidden;\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n {isHiddenCertificate && }\n \n \n \n \n {dict.barredMessage}\n \n \n \n \n );\n};\n","import { Text, VStack } from \"@chakra-ui/react\";\nimport { Button } from \"src/components/base/button\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { IconClosed } from \"src/components/icons\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst CLOSED_TITLE_TEST_ID = \"closed-title\";\nconst CLOSED_DESCRIPTION_TEST_ID = \"closed-description\";\nconst CLOSED_BUTTON_TEST_ID = \"closed-button\";\n\nexport const CertificateBoxClosed = () => {\n const { dict, selectedCertificate: certificate } = useCertificateBoxContext();\n\n return (\n <>\n \n \n \n {dict.closedTitle}\n \n \n {dict.closedDescription}\n \n \n {dict.closingClosedButton}\n \n \n \n );\n};\n","export const certificateRatio = (multiplier: number): string => {\n if (multiplier > 1) {\n return `1:${multiplier}`;\n }\n\n if (multiplier === 1) {\n return \"1:1\";\n }\n\n let nominator = 1;\n\n while (multiplier < 1) {\n nominator *= 10;\n multiplier *= 10;\n }\n\n return `${nominator}:1`;\n};\n","import { Box, Stack, Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { Button } from \"src/components/base/button\";\nimport { WfPopover, PopoverButtonIconInfo } from \"src/components/base/wf-popover\";\nimport { useCertificateBoxContext } from \"../context\";\nimport { certificateRatio } from \"../utils\";\nimport { CBLabel } from \"./label\";\n\nconst RATIO_TAB_BAR_TEST_ID = \"ratio-tab-bar\";\nconst RATIO_TAB_BAR_BUTTON_TEST_ID = \"ratio-tab-bar-button\";\n\nexport const CBRatioTabBar = () => {\n const { data, selectedCertificate, updateSelectedCertificate } = useCertificateBoxContext();\n const { certificates } = data;\n const { t } = useTranslation(\"wf-detail\");\n\n return (\n \n \n {t(\"certificate.ratio\")}\n \n \n \n \n \n {certificates.map(certificate => (\n updateSelectedCertificate(certificate.isin)}\n data-test-id={RATIO_TAB_BAR_BUTTON_TEST_ID}\n >\n {certificateRatio(certificate.exchangeRatioMultiplier)}\n \n ))}\n \n \n );\n};\n","import { VStack } from \"@chakra-ui/react\";\nimport { Button } from \"src/components/base/button\";\nimport { WfLink, WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { SimpleRichText } from \"src/components/common/rich-text/simple-rich-text\";\nimport { IconClosed } from \"src/components/icons\";\nimport { CBDetailsAccordion } from \"../components/details-accordion\";\nimport { CBHeader } from \"../components/header\";\nimport { CBInvestedCapital } from \"../components/invested-capital\";\nimport { CBPrices } from \"../components/prices\";\nimport { CBRatioTabBar } from \"../components/ratio-tab-bar\";\nimport { CBCertificateFee, CBEmission, CBExchangeRatio, CBLiquidationFigure, CBPerformanceFee, CBTradingVolume } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst CLOSING_MESSAGE_TEST_ID = \"closing-message\";\nconst CLOSING_BUTTON_TEST_ID = \"closing-button\";\n\nexport const CertificateBoxClosingInProgress = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const isHiddenCertificate = certificate.isHidden;\n\n return (\n <>\n \n {data.certificates.length > 1 && }\n \n \n \n \n \n \n \n \n \n {isHiddenCertificate && }\n \n \n \n \n {certificate.closingLinkUrl && {dict.closingLink}}\n \n \n \n {dict.closingClosedButton}\n \n \n );\n};\n","import { Text, VStack } from \"@chakra-ui/react\";\nimport { Button } from \"src/components/base/button\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { IconNotAvailable } from \"src/components/icons\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { EnumWikifolioStatus } from \"src/types/common-enum\";\nimport { CBHeader } from \"../components/header\";\nimport { CBPrices } from \"../components/prices\";\nimport { CBRatioTabBar } from \"../components/ratio-tab-bar\";\nimport { CBCertificateFee, CBPerformanceFee } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst PUBLISH_BUTTON_TEST_ID = \"publish-button\";\n\nexport const CertificateBoxTest = () => {\n const userStore = useUserStore();\n const { dict, data } = useCertificateBoxContext();\n const isPublishRequested = data.wikifolio.status === EnumWikifolioStatus.PublishingRequested;\n\n return (\n <>\n \n {data.certificates.length > 1 && }\n \n \n \n \n \n \n \n \n {dict.testMessage}\n \n \n {userStore.isCurrentUser(data.trader) && (\n \n {dict.publishButton}\n \n )}\n \n );\n};\n","import { UseQueryOptions } from \"react-query\";\nimport { API_SAVINGS_PLAN_MODAL_URL } from \"src/consts/urls\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\nimport { ISavingsPlanData, ISavingsPlanDict } from \"./invest.api\";\n\nexport interface ISavingsPlanResponse {\n data: ISavingsPlanData;\n dict: ISavingsPlanDict;\n}\n\ninterface IRequest {\n wikifolioSecurityId: string;\n isin: string;\n wkn: string;\n}\n\nexport function useSavingsPlanModalQuery({ wikifolioSecurityId, isin, wkn }: IRequest, options: UseQueryOptions) {\n return useQuery(API_SAVINGS_PLAN_MODAL_URL, {\n queryParams: new URLSearchParams({\n wikifolioSecurityId,\n isin,\n wkn,\n }),\n ...options,\n });\n}\n","export const SAVINGS_PLAN_MODAL_CONTINUE_BUTTON_TEST_ID = \"savings-plan-modal-continue-button\";\n","import { useState } from \"react\";\nimport { Flex, Modal, ModalBody, ModalContent, ModalHeader, ModalOverlay, ModalProps, Text, VStack } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { EnumActivityType, useGenericActivityMutation } from \"src/api/client/generic-activity.api\";\nimport { useSavingsPlanModalQuery, ISavingsPlanResponse } from \"src/api/client/savings-plan.api\";\nimport { Button } from \"src/components/base/button\";\nimport { ComboBox, ComboBoxItem } from \"src/components/base/combo-box\";\nimport { WfLink, WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { WfModalCloseButton } from \"src/components/base/wf-modal-close-button\";\nimport { BrokerImage, MAX_HEIGHT_BROKER_LIST } from \"src/components/modals/invest-now-modal/invest-now-modal\";\nimport { useWfToast, EnumToastStatus } from \"src/hooks/use-wf-toast\";\nimport { triggerCallbackOnMiddleClickEvent } from \"src/utils/dom/mouse-util\";\nimport { SAVINGS_PLAN_MODAL_CONTINUE_BUTTON_TEST_ID } from \"./savings-plan-modal.test-ids\";\n\ninterface ISavingsPlanModalProps extends Omit {\n isin: string;\n wikifolioId: string;\n wikifolioSecurityId: string;\n wkn: string;\n onRequestSettled: () => void;\n}\n\nexport const SavingsPlanModal = (props: ISavingsPlanModalProps) => {\n const { isin, wikifolioId, wikifolioSecurityId, wkn, onRequestSettled, ...modalProps } = props;\n const { t } = useTranslation(\"common\");\n const toast = useWfToast();\n const {\n data: responseData,\n isLoading,\n isError,\n } = useSavingsPlanModalQuery(\n {\n wikifolioSecurityId,\n isin,\n wkn,\n },\n {\n enabled: modalProps.isOpen,\n onError: () => {\n toast({ status: EnumToastStatus.Error, title: t(\"general-error\") });\n modalProps.onClose();\n },\n onSettled: onRequestSettled,\n }\n );\n\n if (!modalProps.isOpen || isLoading || isError || !responseData) {\n return null;\n }\n\n if (responseData) {\n onRequestSettled();\n }\n\n return ;\n};\n\ninterface IContentProps extends Omit {\n isin: string;\n wikifolioId: string;\n responseData: ISavingsPlanResponse;\n}\n\nexport const SavingsPlanModalContent = ({ isin, wikifolioId, responseData, ...modalProps }: IContentProps) => {\n const {\n data: { preferredBroker, brokers, settingsLink },\n dict,\n } = responseData;\n\n const hasPreferredSavingsPlanBroker = preferredBroker !== null;\n const genericActivity = useGenericActivityMutation();\n\n const [selectedSavingsPlan, setSelectedSavingsPlan] = useState(preferredBroker);\n\n const onNextButtonClick = () => {\n if (selectedSavingsPlan !== null) {\n modalProps.onClose();\n genericActivity({\n activityTypeId: EnumActivityType.CreateSavingsPlanViaBrokerLinkClicked,\n parameter: JSON.stringify({ wikifolioId: wikifolioId, broker: selectedSavingsPlan.name }),\n });\n }\n };\n\n return (\n \n \n \n {dict.header}\n \n \n \n {dict.subHeader}\n \n \n {hasPreferredSavingsPlanBroker ? (\n \n \n \n ) : (\n setSelectedSavingsPlan(value)}\n placeholder={dict.placeholder}\n menuListProps={{ maxH: MAX_HEIGHT_BROKER_LIST }}\n >\n {brokers.map(broker => (\n \n \n \n ))}\n \n )}\n onNextButtonClick())}\n isExternal\n className=\"gtm-invest-modal__savings-plan-broker-button\"\n data-gtm-isin={isin}\n data-test-id={SAVINGS_PLAN_MODAL_CONTINUE_BUTTON_TEST_ID}\n >\n {dict.button}\n \n \n {hasPreferredSavingsPlanBroker && (\n \n {dict.notYourPreferredBroker}\n \n {settingsLink.name}\n \n \n )}\n \n \n \n );\n};\n","import { MouseEvent } from \"react\";\nimport { useBoolean, useDisclosure } from \"@chakra-ui/react\";\nimport { Button, ButtonProps } from \"src/components/base/button\";\nimport { SavingsPlanModal } from \"src/components/modals/savings-plan-modal/savings-plan-modal\";\n\nconst SAVINGS_PLAN_BUTTON_TEST_ID = \"savings-plan-button\";\n\nexport interface ISavingsPlanButtonProps extends ButtonProps {\n wikifolioId: string;\n isin: string;\n wikifolioSecurityId: string;\n wkn: string;\n}\n\nexport const SavingsPlanButton = ({ isin, wikifolioId, wikifolioSecurityId, wkn, onClick, children, ...buttonProps }: ISavingsPlanButtonProps) => {\n const modalDisclosure = useDisclosure();\n const [isLoading, setLoading] = useBoolean();\n\n const handleOnClick = (event: MouseEvent) => {\n setLoading.on();\n modalDisclosure.onOpen();\n onClick?.(event);\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { Flex, Text, VStack } from \"@chakra-ui/react\";\nimport { SimpleRichText } from \"src/components/common/rich-text/simple-rich-text\";\nimport { IconCertificate } from \"src/components/icons\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst CERTIFICATE_COLLATERAL_INFO_TEST_ID = \"certificate-collateral-info\";\n\nexport const Certificate = () => {\n const { dict } = useCertificateBoxContext();\n\n return (\n \n \n {dict.collateralization}\n \n \n \n \n );\n};\n","import { API_COPY_ISIN_MODAL_URL } from \"src/consts/urls\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\nexport interface ICopyIsinModalResponse {\n headline1: string;\n description1: string;\n headline2: string;\n description2: string;\n hideModalCheckbox: string;\n}\n\nexport const useCopyIsinModalQuery = (isModalOpen: boolean) =>\n useQuery(API_COPY_ISIN_MODAL_URL, {\n enabled: isModalOpen,\n });\n","export const COPY_ISIN_MODAL_LOADING_STATE_TEST_ID = \"copy-isin-modal-loading-state\";\n","import { ChangeEvent, ReactNode, useEffect, useState } from \"react\";\nimport { Checkbox, useDisclosure, Modal, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Box, Skeleton, Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { useCopyIsinModalQuery } from \"src/api/client/copy-isin-modal.api\";\nimport { Span } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { WfModalCloseButton } from \"src/components/base/wf-modal-close-button\";\nimport { WatchlistButton } from \"src/components/common/buttons/watchlist-button/watchlist-button\";\nimport { SimpleRichText } from \"src/components/common/rich-text/simple-rich-text\";\nimport { HIDE_MODALS_KEY, COPY_ISIN_MODAL } from \"src/consts/local-storage\";\nimport { useWfToast, EnumToastStatus } from \"src/hooks/use-wf-toast\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { useWikifolioStore } from \"src/stores/wikifolio-store\";\nimport { localStorage } from \"src/utils/storage\";\nimport { COPY_ISIN_MODAL_LOADING_STATE_TEST_ID } from \"./copy-isin-modal.test-ids\";\n\ninterface ICopyIsinModalProps {\n wikifolioId: string;\n wikifolioShortDescription: string;\n children: (openModal: () => void) => ReactNode;\n}\n\nexport const CopyIsinModal = ({ wikifolioId, wikifolioShortDescription, children }: ICopyIsinModalProps) => {\n const { t } = useTranslation(\"common\");\n const toast = useWfToast();\n const { isLoggedIn } = useUserStore();\n const { watchlist, setOnWatchlist } = useWikifolioStore();\n\n const [hideModal, setHideModal] = useState(false);\n\n const onCloseModal = () => {\n if (hideModal) {\n const hideModals: Array = localStorage.get(HIDE_MODALS_KEY) || [];\n localStorage.set(HIDE_MODALS_KEY, [...hideModals, COPY_ISIN_MODAL]);\n }\n };\n\n const { isOpen, onOpen, onClose } = useDisclosure({\n onClose: onCloseModal,\n defaultIsOpen: false,\n });\n\n const { data: modalText, isLoading, isError } = useCopyIsinModalQuery(isOpen);\n const { headline1, description1, headline2, description2, hideModalCheckbox } = modalText || {};\n const isOnWatchlist = watchlist[wikifolioId] ?? false;\n\n const openModal = () => {\n const hideModals: Array | null = localStorage.get(HIDE_MODALS_KEY);\n\n if (!hideModals?.includes(COPY_ISIN_MODAL) && isLoggedIn && !isOnWatchlist) {\n onOpen();\n }\n };\n\n useEffect(() => {\n if (isError) {\n onClose();\n toast({ status: EnumToastStatus.Error, title: t(\"general-error\") });\n }\n }, [isError, onClose, t, toast]);\n\n return (\n <>\n {children(openModal)}\n \n \n \n {isLoading ? (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : (\n <>\n \n \n {headline1}\n \n \n \n \n \n \n {headline2}\n \n \n \n \n \n \n\n \n ) => setHideModal(event.target.checked)}>\n {hideModalCheckbox}\n \n \n \n )}\n \n \n \n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { CopyIsinButton } from \"src/components/common/buttons/copy-isin-button/copy-isin-button\";\nimport { CopyIsinModal } from \"src/components/modals/copy-isin-modal/copy-isin-modal\";\nimport { useCertificateBoxContext } from \"../context\";\nimport { CBLabel } from \"./label\";\n\nexport const CBIsin = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const isin = certificate.isin;\n\n return (\n \n \n {dict.isin}\n \n {isin}\n \n \n \n {openModal => (\n \n {dict.copy}\n \n )}\n \n \n );\n};\n","import { StackDivider, VStack } from \"@chakra-ui/react\";\nimport { WfLinkGhost } from \"src/components/base/wf-link\";\nimport { InvestButton } from \"src/components/common/buttons/innvest-button/invest-button\";\nimport { SavingsPlanButton } from \"src/components/common/buttons/savings-plan-button/savings-plan-button\";\nimport { Certificate } from \"../components/certificate\";\nimport { CBDetailsAccordion } from \"../components/details-accordion\";\nimport { CBHeader } from \"../components/header\";\nimport { CBInvestedCapital } from \"../components/invested-capital\";\nimport { CBIsin } from \"../components/isin\";\nimport { CBPrices } from \"../components/prices\";\nimport { CBRatioTabBar } from \"../components/ratio-tab-bar\";\nimport { CBCertificateFee, CBEmission, CBLiquidationFigure, CBPerformanceFee, CBTradingVolume, CBExchangeRatio } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst END_AGREEMENT_TEST_ID = \"end-agreement\";\nconst LINK_PROSPECT_TEST_ID = \"link-prospect\";\n\nexport const CertificateBoxInvestable = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const isHiddenCertificate = certificate.isHidden;\n const isPrimaryCertificate = certificate.isPrimary;\n\n return (\n <>\n \n {data.certificates.length > 1 && }\n \n \n \n \n } px={2}>\n \n \n \n \n \n \n \n {isHiddenCertificate && }\n \n \n \n {dict.endAgreementText}\n \n \n {dict.linkProspectText}\n \n \n \n \n \n {dict.investNow}\n \n {certificate.showSavingsPlanButton && isPrimaryCertificate && (\n \n {dict.createSavingPlan}\n \n )}\n \n );\n};\n","import { UseQueryOptions } from \"react-query\";\nimport { API_DECLARE_INTEREST_URL, API_DECLARE_INTEREST_MODAL_URL } from \"src/consts/urls\";\nimport { useMutation } from \"src/hooks/react-query/use-mutation\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\n\ninterface ICountry {\n label: string;\n value: string;\n}\n\nexport interface IDeclareInterestResponse {\n data: {\n countries: ICountry[];\n };\n dict: {\n headline: string;\n description: string;\n sendButton: string;\n };\n}\n\nexport function useDeclareInterestQuery(options: UseQueryOptions) {\n return useQuery(API_DECLARE_INTEREST_MODAL_URL, options);\n}\n\ninterface IMutationRequest {\n wikifolioId: string;\n email: string;\n country: string;\n}\n\ninterface IMutationResponse {\n message: string;\n}\n\nexport interface IDeclareInterestMutationError {\n [fieldName: string]: string;\n}\n\nexport const useDeclareInterestMutation = () => {\n const { mutatePromise } = useMutation(API_DECLARE_INTEREST_URL);\n return mutatePromise;\n};\n","export const DECLARE_INTEREST_FORM_TEST_ID = \"declare-interest-form\";\n","import {\n FormControl,\n FormErrorMessage,\n FormLabel,\n Input,\n Modal,\n ModalBody,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n ModalProps,\n Text,\n VStack,\n} from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport {\n IDeclareInterestMutationError,\n IDeclareInterestResponse,\n useDeclareInterestMutation,\n useDeclareInterestQuery,\n} from \"src/api/client/declare-interest.api\";\nimport { Button } from \"src/components/base/button\";\nimport { WfModalCloseButton } from \"src/components/base/wf-modal-close-button\";\nimport { WfSelect } from \"src/components/base/wf-select\";\nimport { useFormValidator } from \"src/hooks/form-validator/use-form-validator\";\nimport { useForm } from \"src/hooks/use-form\";\nimport { useWfToast, EnumToastStatus } from \"src/hooks/use-wf-toast\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { logger } from \"src/utils/logger-util\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { DECLARE_INTEREST_FORM_TEST_ID } from \"./declare-interest-modal.test-ids\";\n\nconst ID_DECLARE_INTEREST_FORM = \"declare-interest-form\";\nconst FAILED_DECLARE_INTEREST_ERROR_MESSAGE = \"Failed to declare interest\";\n\ninterface IDeclareInterestModalProps extends Omit {\n wikifolioId: string;\n onRequestSettled?: () => void;\n}\n\nexport const DeclareInterestModal = (props: IDeclareInterestModalProps) => {\n const { wikifolioId, onRequestSettled, ...modalProps } = props;\n const toast = useWfToast();\n const { country } = useRouterLocale();\n const { t } = useTranslation(\"common\");\n\n const userStore = useUserStore();\n const {\n data: responseData,\n isLoading,\n isError,\n } = useDeclareInterestQuery({\n enabled: modalProps.isOpen,\n onError: () => {\n toast({ status: EnumToastStatus.Error, title: t(\"general-error\") });\n modalProps.onClose();\n },\n onSettled: onRequestSettled,\n });\n\n if (!modalProps.isOpen || isLoading || isError || !responseData) {\n return null;\n }\n\n const prefilledEmail = userStore.user?.email ?? \"\";\n const prefilledCountry = country === \"int\" ? responseData.data.countries[0].value : country;\n\n return ;\n};\n\ninterface IFormValues {\n email: string;\n country: string;\n}\n\ninterface IContentProps extends Omit {\n wikifolioId: string;\n prefilledEmail: string;\n prefilledCountry: string;\n responseData: IDeclareInterestResponse;\n}\n\nexport const DeclareInterestModalContent = (props: IContentProps) => {\n const {\n wikifolioId,\n prefilledEmail,\n prefilledCountry,\n responseData: { data, dict },\n ...modalProps\n } = props;\n\n const { t } = useTranslation(\"common\");\n const toast = useWfToast();\n const {\n register,\n handleSubmit,\n formState: { isSubmitting, errors },\n setError,\n isFieldInvalid,\n } = useForm({\n mode: \"onSubmit\",\n defaultValues: { email: prefilledEmail, country: prefilledCountry },\n });\n\n const validators = useFormValidator();\n const declareInterest = useDeclareInterestMutation();\n\n const onSubmit = handleSubmit(async values => {\n try {\n const response = await declareInterest({\n wikifolioId,\n email: values.email,\n country: values.country,\n });\n toast({ status: EnumToastStatus.Success, title: response.message });\n modalProps.onClose();\n } catch (error) {\n logger.error({ message: FAILED_DECLARE_INTEREST_ERROR_MESSAGE, error });\n Object.entries(error as IDeclareInterestMutationError).forEach(([fieldName, errorMessage]) => {\n setError(fieldName as keyof IFormValues, { message: errorMessage });\n });\n }\n });\n\n return (\n \n \n \n {dict.headline}\n \n \n {dict.description}\n \n \n {t(\"email\")}\n \n {errors.email?.message}\n \n \n {t(\"country\")}\n \n {data.countries.map(({ label, value }) => (\n \n ))}\n \n {errors.country?.message}\n \n \n \n \n \n \n \n \n );\n};\n","import { MouseEvent } from \"react\";\nimport { useBoolean, useDisclosure } from \"@chakra-ui/react\";\nimport { Button, ButtonProps } from \"src/components/base/button\";\nimport { DeclareInterestModal } from \"src/components/modals/declare-interest-modal/declare-interest-modal\";\n\nconst DECLARE_INTEREST_BUTTON_TEST_ID = \"declare-interest-button\";\n\ninterface IProps extends ButtonProps {\n wikifolioId: string;\n}\n\nexport const DeclareInterestButton = ({ wikifolioId, onClick, children, ...buttonProps }: IProps) => {\n const modalDisclosure = useDisclosure();\n const [isLoading, setLoading] = useBoolean();\n\n const handleOnClick = (event: MouseEvent) => {\n setLoading.on();\n modalDisclosure.onOpen();\n onClick?.(event);\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { Text, VStack } from \"@chakra-ui/react\";\nimport { Button } from \"src/components/base/button\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { DeclareInterestButton } from \"src/components/common/buttons/declare-interest-button/declare-interest-button\";\nimport { IconNotAvailable } from \"src/components/icons\";\nimport { CBDetailsAccordion } from \"../components/details-accordion\";\nimport { CBHeader } from \"../components/header\";\nimport { CBInvestedCapital } from \"../components/invested-capital\";\nimport { CBPrices } from \"../components/prices\";\nimport { CBRatioTabBar } from \"../components/ratio-tab-bar\";\nimport { CBCertificateFee, CBEmission, CBExchangeRatio, CBLiquidationFigure, CBPerformanceFee, CBTradingVolume } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst NOT_LICENSED_MESSAGE_TEST_ID = \"not-licensed-message\";\nconst FIND_INVESTABLE_BUTTON_TEST_ID = \"find-investable-button\";\n\nexport const CertificateBoxNotLicensedAll = () => {\n const { dict, data, selectedCertificate: certificate } = useCertificateBoxContext();\n const isHiddenCertificate = certificate.isHidden;\n\n return (\n <>\n \n {data.certificates.length > 1 && }\n \n \n \n \n \n \n \n \n \n {isHiddenCertificate && }\n \n \n \n \n \n {dict.notLicensedMessage}\n \n \n {certificate.findInvestableUrl && (\n \n {dict.findInvestableButton}\n \n )}\n \n {dict.declareInterestButton}\n \n \n );\n};\n","import { Divider, StackDivider, Text, VStack } from \"@chakra-ui/react\";\nimport { TOptions } from \"i18next\";\nimport { useTranslation } from \"next-i18next\";\nimport { ICertificateData } from \"src/api/server/wf-detail.types\";\nimport { IconContinue } from \"src/components/icons\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { CBDetailsAccordion } from \"../components/details-accordion\";\nimport { CBHeader } from \"../components/header\";\nimport { CBInvestedCapital } from \"../components/invested-capital\";\nimport { CBPrices } from \"../components/prices\";\nimport { CBRatioTabBar } from \"../components/ratio-tab-bar\";\nimport { CBCertificateFee, CBEmission, CBLiquidationFigure, CBPerformanceFee, CBTradingVolume } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\nimport { certificateRatio } from \"../utils\";\n\nconst CERTIFICATE_COUNTRY_AVAILABILITY_TEST_ID = \"certificate-country-availability\";\n\nconst generateAvailableLicensedRatiosTranslationOptions = (countryText: string, certificates: readonly ICertificateData[]) => {\n const translationOptions: TOptions = {\n country: countryText,\n };\n\n // create indices (used in wf-detail.json) with ratios of licensed certificates (e.g., {{0}}: \"10:1\", {{1}}: \"100:1\").\n certificates.filter(cert => cert.isLicensed).forEach((cert, i) => (translationOptions[i] = certificateRatio(cert.exchangeRatioMultiplier)));\n\n return translationOptions;\n};\n\nexport const CertificateBoxNotLicensedSingle = () => {\n const {\n data: { certificates },\n } = useCertificateBoxContext();\n const { country } = useRouterLocale();\n const { t } = useTranslation([\"wf-detail\"]);\n\n const countryText = t(`countries.${country.toLowerCase()}`);\n const translationOptions = generateAvailableLicensedRatiosTranslationOptions(countryText, certificates);\n const areMultiLicensedCertificates = translationOptions[0] && translationOptions[1];\n\n return (\n <>\n \n \n \n \n \n } px={2}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n {t(`certificate.country-availability${areMultiLicensedCertificates ? \"-multi\" : \"\"}`, {\n ...translationOptions,\n })}\n \n \n \n );\n};\n","// eslint-disable-next-line no-restricted-imports\nimport { Box, Slider, SliderFilledTrack, SliderProps, SliderThumb, SliderTrack } from \"@chakra-ui/react\";\nimport { SLIDER_THUMB_SIZE } from \"src/theme/components/slider\";\nimport { numberToPx } from \"src/utils/number-format-utils\";\n\nconst SLIDER_THUMB_SIZE_HALF = SLIDER_THUMB_SIZE / 2;\n\nexport const WfSlider = (props: SliderProps) => (\n \n \n \n \n \n \n \n \n \n \n);\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { FullSizeFlexCentered } from \"src/components/base\";\nimport { IconCheckCircle } from \"src/components/icons\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\n\nconst CERTIFICATE_BOX_PROGRESS_BAR_TEST_ID = \"certificate-box-progress-bar\";\n\ninterface IProps {\n prefix?: string;\n currentValue: number;\n requiredValue: number;\n description: string;\n}\n\nexport const CBProgressBar = ({ prefix, currentValue, requiredValue, description }: IProps) => {\n const { formatNumber } = useNumberFormatter();\n\n const percentage = currentValue < requiredValue ? Math.round((100 * currentValue) / requiredValue) : 100;\n const isCompleted = percentage === 100;\n\n return (\n \n \n \n \n {isCompleted ? (\n \n ) : (\n \n )}\n \n \n {prefix ? `${prefix} ` : \"\"}\n {formatNumber(currentValue)} / {formatNumber(requiredValue)}\n \n  {description}\n \n \n );\n};\n","import { useState } from \"react\";\nimport { Box, Divider, Flex, Text, VStack } from \"@chakra-ui/react\";\nimport { AnimatePresence } from \"motion/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IErrorResponse } from \"src/api/client/types\";\nimport { useAddWatchlistWikifoliosMutation, useRemoveWatchlistWikifoliosMutation } from \"src/api/client/watchlist.api\";\nimport { MotionBox, MotionBoxProps } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { OverlayLoadingSpinner } from \"src/components/base/overlay-loading-spinner\";\nimport { WfPopover, PopoverButtonIconInfo } from \"src/components/base/wf-popover\";\nimport { WfSlider } from \"src/components/base/wf-slider\";\nimport { getGlobals } from \"src/consts/globals\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\nimport { useWfToast, EnumToastStatus } from \"src/hooks/use-wf-toast\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { useWikifolioStore } from \"src/stores/wikifolio-store\";\nimport { CBDetailsAccordion } from \"../components/details-accordion\";\nimport { CBHeader } from \"../components/header\";\nimport { CBPrices } from \"../components/prices\";\nimport { CBProgressBar } from \"../components/progress-bar\";\nimport { CBRatioTabBar } from \"../components/ratio-tab-bar\";\nimport { CBCertificateFee, CBPerformanceFee } from \"../components/statistics\";\nimport { useCertificateBoxContext } from \"../context\";\n\nconst INVESTMENT_MIN = 100;\nconst INVESTMENT_MAX = 5000;\nconst INVESTMENT_STEP = 100;\n\nconst PREBOOK_MOTION_BOX_NOTWATCHLISTED_TEST_ID = \"prebook-motion-box-notwatchlisted\";\nconst PREBOOK_MOTION_BOX_WATCHLISTED_TEST_ID = \"prebook-motion-box-watchlisted\";\n\nconst PrebookMotionBox = (props: MotionBoxProps) => (\n \n);\n\nexport const CertificateBoxPublished = () => {\n const { t } = useTranslation(\"common\");\n const { openLoginModal } = useLinkBuilder();\n const toast = useWfToast();\n const { isCurrentUser, isLoggedIn } = useUserStore();\n const {\n dict,\n data: { trader, simplifiedExchangeRate, wikifolio, certificates, tooltips },\n selectedCertificate: certificate,\n } = useCertificateBoxContext();\n\n const { watchlist, setOnWatchlist } = useWikifolioStore();\n const isOnWatchlist = watchlist[wikifolio.id] ?? false;\n\n const { formatNumber } = useNumberFormatter();\n\n const prebookValues = {\n min: INVESTMENT_MIN * simplifiedExchangeRate,\n max: INVESTMENT_MAX * simplifiedExchangeRate,\n step: INVESTMENT_STEP * simplifiedExchangeRate,\n };\n\n const [buyingInterests, setBuyingInterests] = useState(certificate.buyingInterests!.currentValue);\n const [reservedCapital, setReservedCapital] = useState(certificate.reservedCapital!.currentValue);\n const [intendedInvestment, setIntendedInvestment] = useState((wikifolio.intendedInvestment || INVESTMENT_MIN) * simplifiedExchangeRate);\n const { mutatePromise: addWatchlist } = useAddWatchlistWikifoliosMutation(wikifolio.id);\n const { mutatePromise: removeWatchlist } = useRemoveWatchlistWikifoliosMutation(wikifolio.id);\n const [isLoading, setLoading] = useState(false);\n\n const alwaysShowOperationalMessage = certificate.hasBlockedReason || !trader.isLegitimized;\n const showOperationalMessage = dict.operationalMessage && (alwaysShowOperationalMessage || !isOnWatchlist);\n\n const onPrebook = async () => {\n if (!isLoggedIn) {\n openLoginModal();\n return;\n }\n\n try {\n setLoading(true);\n await addWatchlist({ intendedInvestment: intendedInvestment / simplifiedExchangeRate });\n setReservedCapital(reservedCapital + intendedInvestment);\n setBuyingInterests(buyingInterests + 1);\n setOnWatchlist(wikifolio.id, true);\n toast({ status: EnumToastStatus.Success, title: t(\"add-wikifolio-success\") });\n } catch (result) {\n setLoading(false);\n toast({ status: EnumToastStatus.Error, title: (result as IErrorResponse)?.message || t(\"general-error\") });\n }\n };\n\n const onUndoPrebook = async () => {\n try {\n setLoading(true);\n await removeWatchlist();\n setReservedCapital(reservedCapital - intendedInvestment);\n setBuyingInterests(buyingInterests - 1);\n setOnWatchlist(wikifolio.id, false);\n toast({ status: EnumToastStatus.Success, title: t(\"remove-wikifolio-success\") });\n } catch (result) {\n setLoading(false);\n toast({ status: EnumToastStatus.Error, title: (result as IErrorResponse)?.message || t(\"general-error\") });\n }\n };\n\n return (\n <>\n \n {certificates.length > 1 && }\n \n \n \n \n \n \n \n \n \n \n \n {dict.publishedCriteriaParagraph}\n \n \n \n \n \n \n {showOperationalMessage && (\n \n {dict.operationalMessage}\n \n )}\n \n \n {!isCurrentUser(trader) && (\n \n setLoading(false)}>\n {!isOnWatchlist && (\n \n \n \n \n {dict.prebookTitle}\n \n \n \n \n \n {dict.prebookParagraph}\n \n \n \n \n {getGlobals().currency} {formatNumber(intendedInvestment)}\n \n \n \n \n \n \n \n {isLoading && }\n \n )}\n {isOnWatchlist && (\n \n \n \n \n {dict.prebookDoneTitle}\n \n \n {dict.prebookDoneParagraph}\n \n \n \n \n {isLoading && }\n \n )}\n \n \n )}\n \n );\n};\n","import { VStack } from \"@chakra-ui/react\";\nimport { ICertificateDict } from \"src/api/server/wf-detail.types\";\nimport { EnumWikifolioStatus } from \"src/types/common-enum\";\nimport { logger } from \"src/utils/logger-util\";\nimport { CERTIFICATE_BOX_TEST_ID } from \"./certificate-box.test-ids\";\nimport { CertificateBoxProvider, ICertificateBoxData, useCertificateBoxContext } from \"./context\";\nimport { useCertificate } from \"./hooks/use-certificate\";\nimport { CertificateBoxBarred } from \"./variants/barred\";\nimport { CertificateBoxClosed } from \"./variants/closed\";\nimport { CertificateBoxClosingInProgress } from \"./variants/closing-in-progress\";\nimport { CertificateBoxTest } from \"./variants/in-test\";\nimport { CertificateBoxInvestable } from \"./variants/investable\";\nimport { CertificateBoxNotLicensedAll } from \"./variants/not-licensed-all\";\nimport { CertificateBoxNotLicensedSingle } from \"./variants/not-licensed-single\";\nimport { CertificateBoxPublished } from \"./variants/published\";\n\nconst NO_CERTIFICATE_BOX_VARIANT_ERROR_MESSAGE = \"No CertificateBox variant for status code\";\n\nexport interface ICertificateBoxProps {\n dict: ICertificateDict;\n data: ICertificateBoxData;\n}\n\nconst CertificateBoxContent = ({ data }: ICertificateBoxProps) => {\n const { selectedCertificate } = useCertificateBoxContext();\n\n switch (data.wikifolio.status) {\n case EnumWikifolioStatus.Investable:\n const notLicensedCertificates = data.certificates.filter(certificate => !certificate.isLicensed);\n\n if (notLicensedCertificates.length === data.certificates.length) {\n return ;\n }\n\n return selectedCertificate.isLicensed ? : ;\n case EnumWikifolioStatus.ClosingInProgress:\n return ;\n case EnumWikifolioStatus.Barred:\n return ;\n case EnumWikifolioStatus.Closed:\n return ;\n case EnumWikifolioStatus.Test:\n case EnumWikifolioStatus.PublishingRequested:\n return ;\n case EnumWikifolioStatus.Published:\n case EnumWikifolioStatus.IssuingRequested:\n case EnumWikifolioStatus.EmissionProcessStarted:\n case EnumWikifolioStatus.ReadyForIssuing:\n return ;\n default:\n logger.error({ message: NO_CERTIFICATE_BOX_VARIANT_ERROR_MESSAGE, wikifolioStatus: data.wikifolio.status });\n return null;\n }\n};\n\nexport const CertificateBox = (props: ICertificateBoxProps) => {\n const { selectedCertificate, updateSelectedCertificate } = useCertificate(props.data.certificates);\n\n return (\n \n \n \n \n \n );\n};\n","export const GENERAL_SECTION_SPACING = [10, 10, \"112px\"];\n","import { useRef, useState } from \"react\";\nimport { Box, Flex, Radio, RadioGroup, SelectProps, Text, useBoolean, VStack } from \"@chakra-ui/react\";\nimport { AnimatePresence } from \"motion/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { EnumTimeRange, useDownloadMutation } from \"src/api/client/detail-page-download.api\";\nimport { IErrorResponse } from \"src/api/client/types\";\nimport { IWikifolioDetailData, IWikifolioDetailDict } from \"src/api/server/wf-detail.types\";\nimport { MotionBox } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { WfPopover, PopoverButtonIconInfo } from \"src/components/base/wf-popover\";\nimport { WfSelect } from \"src/components/base/wf-select\";\nimport { CONTAINER_PX_NEGATIVE } from \"src/components/layout/container\";\nimport { EnumToastStatus, useWfToast } from \"src/hooks/use-wf-toast\";\nimport { EnumDownloadType, EnumWikifolioStatus } from \"src/types/common-enum\";\n\ninterface ITimeRangeSelectProps extends Omit {\n value: EnumTimeRange;\n onChange: (value: EnumTimeRange) => void;\n dict: IWikifolioDetailDict[\"downloadArea\"];\n wikifolio: IWikifolioDetailData[\"wikifolio\"];\n}\n\nconst TimeRangeSelect = ({ value, onChange, dict, wikifolio, ...selectProps }: ITimeRangeSelectProps) => {\n const isWikifolioInvestable = wikifolio.status === EnumWikifolioStatus.Investable;\n\n return (\n \n onChange(Number(e.target.value))} {...selectProps}>\n \n \n \n \n \n \n {isWikifolioInvestable && }\n \n \n \n );\n};\n\ninterface IDownloadSectionProps {\n data: Pick;\n dict: IWikifolioDetailDict[\"downloadArea\"];\n}\n\nexport const DownloadSection = ({ data: { wikifolio, downloadArea: tooltips }, dict }: IDownloadSectionProps) => {\n const [downloadType, setDownloadType] = useState(EnumDownloadType.Portfolio);\n const [timeRangePriceData, setTimeRangePriceData] = useState(EnumTimeRange.SinceCreation);\n const [timeRangeAccountStatement, setTimeRangeAccountStatement] = useState(EnumTimeRange.SinceCreation);\n const toast = useWfToast();\n const toastVisible = useRef(false);\n const downloadMutation = useDownloadMutation();\n const { t } = useTranslation(\"common\");\n const [isLoading, setLoading] = useBoolean();\n\n const onError = (title: string) => {\n if (!toastVisible.current) {\n toastVisible.current = true;\n toast({ status: EnumToastStatus.Error, duration: 5000, title: title });\n setTimeout(() => {\n toastVisible.current = false;\n }, 5000);\n }\n };\n\n const onDownloadClick = async () => {\n let range: EnumTimeRange | null;\n switch (downloadType) {\n case EnumDownloadType.PriceData:\n range = timeRangePriceData;\n break;\n case EnumDownloadType.AccountStatement:\n range = timeRangeAccountStatement;\n break;\n default:\n range = null;\n break;\n }\n\n try {\n setLoading.on();\n await downloadMutation({\n wikifolioId: wikifolio.id.toString(),\n type: downloadType,\n range: range,\n });\n } catch (error) {\n onError((error as IErrorResponse)?.message || t(\"general-error\"));\n }\n setLoading.off();\n };\n\n const inflowOutflowDownloadAllowed = [EnumWikifolioStatus.Investable, EnumWikifolioStatus.Barred, EnumWikifolioStatus.ClosingInProgress].includes(\n wikifolio.status\n );\n\n return (\n \n \n {dict.title}\n \n {dict.description}\n {\n setDownloadType(Number(value));\n }}\n >\n \n {dict.portfolio}\n \n \n {dict.priceData}\n \n \n \n \n \n {downloadType === EnumDownloadType.PriceData && (\n setTimeRangePriceData(value)}\n dict={dict}\n wikifolio={wikifolio}\n mb={1}\n />\n )}\n \n \n \n \n {dict.accountStatement}\n \n \n \n \n \n {downloadType === EnumDownloadType.AccountStatement && (\n setTimeRangeAccountStatement(value)}\n dict={dict}\n wikifolio={wikifolio}\n />\n )}\n \n \n {inflowOutflowDownloadAllowed && (\n \n {dict.inflowOutflow}\n \n \n \n \n )}\n \n \n \n \n );\n};\n","import { IBestsellerData } from \"src/components/modules/bestseller-module/bestseller.types\";\nimport { IImage, ILink, IWikifolioDescription } from \"src/types/common\";\nimport { IBasePageProps } from \"src/types/layout\";\n\nexport interface IFeedData {\n followerFeedMobileHeadlineLink: ILink | null;\n recommendations: IBestsellerData[];\n traderDashboardCardImage: IImage | null;\n traderDashboardCardLink: ILink | null;\n traderFeedMobileDashboardLink: ILink | null;\n traderFeedMobileWatchlistLink: ILink | null;\n userWikifolioDescriptions: ReadonlyArray | null;\n watchlistCardImage: IImage;\n watchlistCardLink: ILink;\n isTrendingNewsToggleActive: boolean;\n userFeedFilters: IUserFeedFilter[];\n}\n\nexport interface IUserFeedFilter {\n feedType: EnumFeedType;\n hash: string;\n label: string;\n}\n\nexport enum EnumFeedType {\n UserFeed,\n UserFeedTraderComments,\n UserFeedWikifolioPortfolioChanges,\n UserFeedTradingMotives,\n UserFeedHighlights,\n AllNews,\n WikifolioNews,\n DailyLunchbox,\n WeeklyLunchbox,\n WikifolioEntity,\n TraderEntity,\n UnderlyingEntity,\n}\n\nexport interface IFeedDict {\n commentingModalEditorPlaceholder: string;\n followerCardsHeadline: string;\n followerFeedMobileHeadline: string;\n headline: string;\n mobileHeadline: string;\n feedTab: string;\n newsTab: string;\n allNewsToggle: string;\n commentReportDescription: string;\n trendingNewsToggle: string;\n recommendationsHeadline: string;\n traderCardsHeadline: string;\n traderDashboardCardText: string;\n traderFeedMobileHeadline: string;\n watchlistCardText: string;\n}\n\nexport interface IFeedProps extends IBasePageProps {}\n","import { NAV_HEIGHT } from \"src/components/layout/default-layout\";\n\nexport const DATA_ATTR_JUMPMARK_SECTION = \"data-jumpmark\";\n\nexport const THROTTLE_SCROLL_EVENT_MS = 100;\nexport const THROTTLE_RESIZE_EVENT_MS = 300;\n\nexport const JUMPMARK_HEIGHT = [5, 7];\nconst STICKY_HEADERS_HEIGHT = [\n JUMPMARK_HEIGHT[0] + NAV_HEIGHT[0] + 1,\n JUMPMARK_HEIGHT[1] + NAV_HEIGHT[1] + 2,\n JUMPMARK_HEIGHT[1] + NAV_HEIGHT[2] + 2,\n];\n\n// Because we have sticky headers we have to calculate the offset where an anchor should be visible from\nexport const ANCHOR_OFFSET = STICKY_HEADERS_HEIGHT.map(value => value * 8);\nexport const ANCHOR_OFFSET_NEGATIVE_PX = ANCHOR_OFFSET.map(value => `-${value}px`);\nexport const ANCHOR_OFFSET_PX = ANCHOR_OFFSET.map(value => `${value}px`);\n\nexport enum EnumJumpMarkSection {\n Overview = \"overview\",\n Feed = \"feed\",\n TradingIdea = \"tradingidea\",\n Portfolio = \"portfolio\",\n KeyFigures = \"keyfigures\",\n Trades = \"trades\",\n}\n","import { createContext, useContext, ReactNode, useRef, useState } from \"react\";\nimport { EnumJumpMarkSection } from \"./consts\";\n\ninterface IJumpMarkAnchorRefsProvider {\n children: ReactNode;\n}\n\ntype TRefs = Partial>;\ninterface IProviderValue {\n setRef: (jumpMarkAnchor: EnumJumpMarkSection, jumpMarkRef: HTMLDivElement) => void;\n getRef: (jumpMarkAnchor: EnumJumpMarkSection) => HTMLDivElement | undefined;\n scrollName: EnumJumpMarkSection | null;\n setScrollName: (scrollToName: EnumJumpMarkSection | null) => void;\n}\n\nconst JumpMarkAnchorRefsContext = createContext({} as IProviderValue);\n\nfunction JumpMarkAnchorRefsProvider({ children }: IJumpMarkAnchorRefsProvider): React.ReactElement {\n const ref = useRef({});\n // The scrollName is used to keep track to what anchor\n // was clicked and keeps it as soon as hits scrollIntoView element.\n const [scrollName, setScrollName] = useState(null);\n\n const getRef = (jumpMarkAnchor: EnumJumpMarkSection) => ref.current[jumpMarkAnchor];\n const setRef = (jumpMarkAnchor: EnumJumpMarkSection, jumpMarkRef: HTMLDivElement) => {\n ref.current[jumpMarkAnchor] = jumpMarkRef;\n };\n\n return {children};\n}\n\nfunction useJumpMarkAnchorRefs() {\n const context = useContext(JumpMarkAnchorRefsContext);\n if (context === undefined) {\n throw new Error(\"useJumpMarkAnchorRefs must be used within a JumpMarkAnchorRefsContext\");\n }\n return context;\n}\n\nexport { JumpMarkAnchorRefsProvider, useJumpMarkAnchorRefs };\n","import { useEffect, useRef } from \"react\";\nimport { QueryObserver } from \"react-query\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { EnumJumpMarkSection } from \"../jump-marks/consts\";\nimport { useJumpMarkAnchorRefs } from \"../jump-marks/jump-mark-anchor-refs-provider\";\n\ntype IProps = {\n refetch: QueryObserver[\"refetch\"];\n sectionRef: { current: HTMLDivElement | null };\n};\nexport function useCallbackOnVisibility({ refetch, sectionRef }: IProps) {\n const { scrollName } = useJumpMarkAnchorRefs();\n const isFirstFetch = useRef(false);\n\n const isReadyToLoadFeed = scrollName === null || scrollName === EnumJumpMarkSection.Feed;\n const isVisible = useViewportSpy(isReadyToLoadFeed ? sectionRef : { current: null }, { threshold: 0.1 });\n\n useEffect(() => {\n if (isVisible && !isFirstFetch.current && isReadyToLoadFeed) {\n refetch();\n isFirstFetch.current = true;\n }\n }, [refetch, isVisible, isReadyToLoadFeed]);\n}\n","import { useCallback, useEffect, useRef } from \"react\";\nimport { Flex, VStack } from \"@chakra-ui/react\";\nimport dynamic from \"next/dynamic\";\nimport { useTranslation } from \"next-i18next\";\nimport { EnumFeedType } from \"src/api/server/feed.types\";\nimport { IWikifolioFeedDict } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { EmptyState } from \"src/components/common/empty-state\";\nimport { FeedReportModal } from \"src/components/feed-card/feed-report-modal\";\nimport { FeedCardSkeleton } from \"src/components/feed-card/skeleton/feed-card-skeleton\";\nimport { EnumPageType, initializeFeedTrackingStore } from \"src/components/feed-card/store/feed-tracking-store\";\nimport { IFeedCardListProps } from \"src/components/feed-card-list/feed-card-list\";\nimport { useFeedItemSeenTracking } from \"src/components/pages/feed/hooks/use-feed-item-seen-tracking\";\nimport { useInfiniteFeed } from \"src/components/pages/feed/hooks/use-infinite-feed\";\nimport { API_FEED_V3_WIKIFOLIO } from \"src/consts/urls\";\nimport { ContentSeenItem } from \"../../feed/types/types\";\nimport { useCallbackOnVisibility } from \"./use-callback-on-visibility\";\n\nexport interface IFeedSectionProps {\n wikifolioId: string;\n dict: IWikifolioFeedDict;\n}\n\nconst LoadingState = () => (\n <>\n \n \n \n \n);\n\nconst FeedView = dynamic(() => import(\"src/components/feed-card-list/feed-card-list\").then(component => component.FeedCardList), {\n loading: () => ,\n});\n\nexport const FeedSection = ({ wikifolioId, dict }: IFeedSectionProps) => {\n const { t } = useTranslation(\"common\");\n const { feed, isLoading, isError, hasNextPage, fetchNextPage, refetch } = useInfiniteFeed({\n feedUrl: API_FEED_V3_WIKIFOLIO,\n feedType: EnumFeedType.WikifolioEntity,\n wikifolioId,\n enabled: false,\n });\n const sectionRef = useRef(null);\n const seenItemsRef = useRef>(new Map());\n const { trackSeenItem } = useFeedItemSeenTracking(seenItemsRef);\n\n useEffect(() => initializeFeedTrackingStore({ page: EnumPageType.WikifolioDetail, wikifolioId: wikifolioId }), [wikifolioId]);\n\n useCallbackOnVisibility({ refetch, sectionRef });\n\n const onFirstSeen = useCallback(\n (contentId: string) => {\n trackSeenItem(contentId);\n },\n [trackSeenItem]\n );\n\n return (\n
\n \n {dict.title}\n \n \n {!feed && isError && }\n {(!feed || isLoading) && !isError && }\n {feed && !feed.length && }\n {feed && (\n <>\n \n \n \n )}\n {hasNextPage && (\n \n \n \n )}\n \n
\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { DATA_ATTR_JUMPMARK_SECTION, EnumJumpMarkSection } from \"./consts\";\n\ninterface IProps extends Omit {\n section: EnumJumpMarkSection;\n}\n\n// the section where the specific jump mark should be active when visible\nexport const JumpMarkSection = ({ section, ...boxProps }: IProps) => ;\n","import { useNavHeight } from \"src/components/layout/hooks/use-nav-height\";\nimport { JUMPMARK_HEIGHT } from \"../consts\";\n\nexport const useAnchorOffset = () => {\n const { NAV_HEIGHT_VARIATION } = useNavHeight();\n\n const STICKY_HEADERS_HEIGHT = [\n JUMPMARK_HEIGHT[0] + NAV_HEIGHT_VARIATION[0] + 1,\n JUMPMARK_HEIGHT[1] + NAV_HEIGHT_VARIATION[1] + 2,\n JUMPMARK_HEIGHT[1] + NAV_HEIGHT_VARIATION[2] + 2,\n ];\n const ANCHOR_OFFSET = STICKY_HEADERS_HEIGHT.map(value => value * 8);\n const ANCHOR_OFFSET_NEGATIVE_PX = ANCHOR_OFFSET.map(value => `-${value}px`);\n const ANCHOR_OFFSET_PX = ANCHOR_OFFSET.map(value => `${value}px`);\n\n return { ANCHOR_OFFSET, ANCHOR_OFFSET_NEGATIVE_PX, ANCHOR_OFFSET_PX } as const;\n};\n","import { BoxProps, Flex, forwardRef } from \"@chakra-ui/react\";\nimport { IWfLinkProps, WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { JUMPMARK_HEIGHT } from \"./consts\";\n\ninterface IProps extends Omit {\n isActive?: boolean;\n onClick?: BoxProps[\"onClick\"];\n onFocus?: BoxProps[\"onFocus\"];\n}\n\nexport const JumpMarkTab = forwardRef(({ isActive, href, children, id, onClick, onFocus }: IProps, ref) => (\n \n \n {children}\n \n
\n));\n","export const JUMP_MARKS_BAR_TEST_ID = \"jump-marks-bar\";\n","import { MotionValue } from \"motion/react\";\nimport { EnumJumpMarkSection } from \"./consts\";\n\nexport function getJumpMarkHash(section: EnumJumpMarkSection) {\n return section === EnumJumpMarkSection.Overview ? \"#\" : `#${section}`;\n}\n\n// is used for scrolling a tab into the viewport, not for scrolling to a section!\nexport const scrollTabIntoViewport = (tabScrollX: MotionValue, tabElement?: HTMLDivElement) => {\n if (!tabElement) {\n return;\n }\n\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n\n // let's create two rects so we can easier calculate the viewport\n const tabBarRect = {\n x1: -tabScrollX.get(),\n x2: -tabScrollX.get() + windowWidth,\n };\n const tabElementRect = {\n x1: tabElement.offsetLeft,\n x2: tabElement.offsetLeft + tabElement.offsetWidth,\n };\n\n const isTabElementOutside = tabElementRect.x1 < tabBarRect.x1 || tabElementRect.x2 > tabBarRect.x2;\n\n // jumpmark tab is not visible in the tabbar yet, let's scroll it into the viewport\n if (isTabElementOutside) {\n if (tabElementRect.x1 > tabBarRect.x1) {\n // if it is hidden behind the right side of the current viewport, scroll it to be the last visible item\n tabScrollX.set(-tabElement.offsetLeft + windowWidth - tabElement.offsetWidth);\n } else {\n // if it is hidden behind the left side of the current viewport, scroll it to be the first visible item\n tabScrollX.set(-tabElement.offsetLeft);\n }\n }\n};\n\nexport function isElementInViewport(el: HTMLElement, anchorOffset = 0) {\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n\n // Dev-Note: we add 2 pixels to the anchorOffset so that the element is really out of the viewport\n const vertInView = rect.top <= windowHeight && rect.top + rect.height - (anchorOffset + 2) >= 0;\n const horInView = rect.left <= windowWidth && rect.left + rect.width >= 0;\n\n return vertInView && horInView;\n}\n","import { useRouter } from \"next/router\";\nimport { scrollIntoView } from \"src/utils/dom\";\nimport { scrollToTheTop } from \"src/utils/dom-util\";\nimport { EnumJumpMarkSection } from \"./consts\";\nimport { useJumpMarkAnchorRefs } from \"./jump-mark-anchor-refs-provider\";\nimport { getJumpMarkHash } from \"./utils\";\n\nexport const useJumpToSection = () => {\n const router = useRouter();\n const { getRef, setScrollName } = useJumpMarkAnchorRefs();\n\n return (id: EnumJumpMarkSection) => {\n const element = getRef(id);\n\n setScrollName(id);\n if (element) {\n // we remove the id, set the hash and then add the id again afterwards to avoid non-smooth scrolling\n element.removeAttribute(\"id\");\n window.location.hash = getJumpMarkHash(id);\n element.setAttribute(\"id\", id);\n\n scrollIntoView(element, { behavior: \"smooth\" }).then(() => {\n setScrollName(null);\n });\n } else {\n // this is the case for the overview section where we want to scroll to the top\n\n const path = window.location.search ? `${window.location.pathname}${window.location.search}` : window.location.pathname;\n scrollToTheTop();\n\n router.push(path).then(() => {\n setScrollName(null);\n });\n }\n };\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { Box, BoxProps, HStack, useBreakpointValue } from \"@chakra-ui/react\";\nimport throttle from \"lodash.throttle\";\nimport { useMotionValue } from \"motion/react\";\nimport { IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { MotionBox, Section } from \"src/components/base\";\nimport { CONTAINER_PX, CONTAINER_W } from \"src/components/layout/container\";\nimport { useNavHeight } from \"src/components/layout/hooks/use-nav-height\";\nimport { useRouterCaller } from \"src/utils/router/use-router-caller\";\nimport { DATA_ATTR_JUMPMARK_SECTION, EnumJumpMarkSection, THROTTLE_RESIZE_EVENT_MS, THROTTLE_SCROLL_EVENT_MS } from \"./consts\";\nimport { useAnchorOffset } from \"./hooks/use-anchor-offset\";\nimport { useJumpMarkAnchorRefs } from \"./jump-mark-anchor-refs-provider\";\nimport { JumpMarkTab } from \"./jump-mark-tab\";\nimport { JUMP_MARKS_BAR_TEST_ID } from \"./jump-marks-bar.test-ids\";\nimport { useJumpToSection } from \"./use-jump-to-section\";\nimport { getJumpMarkHash, isElementInViewport, scrollTabIntoViewport } from \"./utils\";\n\ninterface IProps extends BoxProps {\n dict: Pick;\n}\n\nexport const JumpMarksBar = ({ dict, ...boxProps }: IProps) => {\n const tabBarContainerRef = useRef(null);\n const tabBarRef = useRef(null);\n const tabRefs = useRef(new Map()).current;\n const jumpMarkSectionRefs = useRef([]);\n const jumpToSection = useJumpToSection();\n const [dragConstraint, setDragConstraint] = useState(0);\n const { scrollName } = useJumpMarkAnchorRefs();\n\n const { ANCHOR_OFFSET } = useAnchorOffset();\n\n // Dev-Note: we're using framer motion to scroll the jumpmark tabs, because else we have problems with scrolling the main area and the tabs at the same time\n const tabScrollX = useMotionValue(0);\n\n const currentlyScrollingToRef = useRef(null);\n\n const [activeId, setActiveId] = useState(EnumJumpMarkSection.Overview);\n const anchorOffset = useBreakpointValue(ANCHOR_OFFSET);\n\n const { isCallerContentApp } = useRouterCaller();\n const { NAV_HEIGHT_VARIATION } = useNavHeight();\n\n useEffect(() => {\n // let's cache all jumpmark sections so we don't have to query them on every scroll event\n jumpMarkSectionRefs.current = Array.from(document.querySelectorAll(`*[${DATA_ATTR_JUMPMARK_SECTION}]`).values());\n\n // on scroll we check which jumpmark section is currently visible and set the active tab accordingly\n const scrollEventListener = throttle(() => {\n Object.values(EnumJumpMarkSection).some((id: EnumJumpMarkSection) => {\n const matchingElements = jumpMarkSectionRefs.current.filter(\n element => element.dataset[DATA_ATTR_JUMPMARK_SECTION.replace(\"data-\", \"\")] === id\n );\n\n for (const element of matchingElements) {\n // let's look if one of the section elements is in the viewport and if we should make the corresponding tab active\n\n if (currentlyScrollingToRef.current === id) {\n currentlyScrollingToRef.current = null;\n }\n\n if (isElementInViewport(element, anchorOffset)) {\n if (currentlyScrollingToRef.current === null) {\n // we only make the tab active if we're currently not scrolling smooth to a section\n const tabElement = tabRefs.get(id);\n scrollTabIntoViewport(tabScrollX, tabElement);\n\n if (activeId !== id && scrollName === null) {\n setActiveId(id);\n }\n }\n\n // we found the first matching section, let's return true and discontinue the upper loop\n return true;\n }\n }\n return false;\n });\n }, THROTTLE_SCROLL_EVENT_MS);\n\n // the resize event listener is used to recalculate the drag constraint with the new tabBar width\n const resizeEventListener = throttle(() => {\n const tabBarContainerWidth = tabBarContainerRef.current?.offsetWidth || 0;\n const tabBarWidth = tabBarRef.current?.scrollWidth || 0;\n\n let dragConstraint = tabBarContainerWidth - tabBarWidth;\n if (dragConstraint > 0) {\n dragConstraint = 0;\n }\n\n setDragConstraint(dragConstraint);\n }, THROTTLE_RESIZE_EVENT_MS);\n\n // we calculate it also on the first render when no resize happened yet\n resizeEventListener();\n\n window.addEventListener(\"scroll\", scrollEventListener);\n window.addEventListener(\"resize\", resizeEventListener);\n return () => {\n window.removeEventListener(\"scroll\", scrollEventListener);\n window.removeEventListener(\"resize\", resizeEventListener);\n };\n }, [anchorOffset, activeId, tabRefs, tabScrollX, scrollName]);\n\n const onTabClick = (id: EnumJumpMarkSection) => {\n currentlyScrollingToRef.current = id;\n const tabElement = tabRefs.get(id);\n scrollTabIntoViewport(tabScrollX, tabElement);\n setActiveId(id);\n jumpToSection(id);\n };\n\n return (\n {\n // as it is not a real scrolling container we simulate scrolling with this onWheel event listener\n let newX = tabScrollX.get() - e.deltaX;\n if (newX > 0) {\n newX = 0;\n } else if (newX < dragConstraint) {\n newX = dragConstraint;\n }\n tabScrollX.set(newX);\n }}\n data-test-id={JUMP_MARKS_BAR_TEST_ID}\n {...boxProps}\n >\n \n \n \n \n \n \n \n \n {Object.values(EnumJumpMarkSection).map((id: EnumJumpMarkSection) => (\n (element ? tabRefs.set(id, element) : tabRefs.delete(id))}\n isActive={activeId === id}\n key={id}\n id={id}\n href={getJumpMarkHash(id)}\n onClick={e => {\n // we prevent default browser scrolling because we want to scroll smooth\n e.preventDefault();\n onTabClick(id);\n }}\n onFocus={() => {\n // when the element gets focused we scroll it into view if necessary (e.g when the user navigates with tabulator key)\n const tabElement = tabRefs.get(id);\n scrollTabIntoViewport(tabScrollX, tabElement);\n }}\n >\n {dict.jumpMarks[id]}\n \n ))}\n \n \n \n \n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { EnumJumpMarkSection } from \"./consts\";\nimport { useAnchorOffset } from \"./hooks/use-anchor-offset\";\nimport { useJumpMarkAnchorRefs } from \"./jump-mark-anchor-refs-provider\";\n\ninterface IProps extends Omit {\n section: EnumJumpMarkSection;\n}\n\nexport const JumpMarkAnchor = ({ section, ...boxProps }: IProps) => {\n const { setRef } = useJumpMarkAnchorRefs();\n const { ANCHOR_OFFSET_NEGATIVE_PX, ANCHOR_OFFSET_PX } = useAnchorOffset();\n // Dev-Note: we are working with the negative marginTop and positive paddingTop hack here, because scrollMarginTop is only supported in Safari since April\n // with this we have the best browser support\n return (\n {\n setRef(section, jumpMarkRef);\n }}\n mt={ANCHOR_OFFSET_NEGATIVE_PX}\n pt={ANCHOR_OFFSET_PX}\n pointerEvents=\"none\"\n {...boxProps}\n />\n );\n};\n","import { Fragment } from \"react\";\nimport { Divider, Stack, VStack } from \"@chakra-ui/react\";\nimport { IWikifolioKeyFigureGroup } from \"src/api/server/wf-detail.types\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { KeyFigure } from \"src/components/common/key-figure\";\n\ninterface IKeyFigureGroupProps {\n keyFigureGroup: IWikifolioKeyFigureGroup;\n showHeadline?: boolean;\n}\n\nexport const KeyFigureGroup = ({ keyFigureGroup, showHeadline }: IKeyFigureGroupProps) => {\n const { label, rankings } = keyFigureGroup;\n\n const pivot = Math.ceil(rankings.length / 2);\n const firstColumnRankings = rankings.slice(0, pivot);\n const secondColumnRankings = rankings.slice(pivot);\n\n return (\n <>\n {showHeadline && (\n \n {label}\n \n )}\n \n \n {firstColumnRankings.map((ranking, index) => (\n \n \n \n \n ))}\n \n \n {secondColumnRankings.map((ranking, index) => (\n \n \n \n \n ))}\n \n \n \n );\n};\n","import { Tab, TabList, TabPanel, TabPanels, Tabs } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IWikifolioKeyFigureGroup } from \"src/api/server/wf-detail.types\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { KeyFigureGroup } from \"./key-figure-group\";\n\ninterface IOtherRiskIndicatorsProps {\n keyFigureGroups: IWikifolioKeyFigureGroup[];\n}\n\nexport const OtherRiskIndicators = ({ keyFigureGroups }: IOtherRiskIndicatorsProps) => {\n const { t } = useTranslation(\"wf-detail\");\n\n return (\n <>\n \n {t(\"headlines.other-key-risk-indicators\")}\n \n \n \n {keyFigureGroups.map(keyFigureGroup => (\n {keyFigureGroup.label}\n ))}\n \n \n {keyFigureGroups.map(keyFigureGroup => (\n \n \n \n ))}\n \n \n \n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { IKeyFigures, IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { KeyFigureGroup } from \"./key-figure-group\";\nimport { OtherRiskIndicators } from \"./other-risk-indicators\";\n\ninterface IKeyFiguresProps extends BoxProps {\n keyFigures: IKeyFigures;\n dict: IWikifolioDetailProps[\"dict\"];\n}\n\nexport const KeyFigures = ({ keyFigures, dict, ...boxProps }: IKeyFiguresProps) => {\n return (\n
\n \n {dict.keyfiguresTitle}\n \n {keyFigures.kpis.map((keyFigureGroup, index) => (\n \n \n \n ))}\n \n
\n );\n};\n","import { UseQueryOptions } from \"react-query\";\nimport { IFeedWikifolioNewsResponse } from \"src/api/client/feed-wikifolio-news.api.types\";\nimport { API_FEED_V3_NEWS_WIKIFOLIO } from \"src/consts/urls\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\n\nexport const useFeedWikifolioNewsQuery = (wikifolioId: string, options: UseQueryOptions) => {\n return useQuery(API_FEED_V3_NEWS_WIKIFOLIO, {\n queryParams: new URLSearchParams({\n wikifolioId,\n }),\n ...options,\n });\n};\n","import React from \"react\";\nimport { HStack, List, ListItem, Text } from \"@chakra-ui/react\";\nimport { isToday } from \"date-fns\";\nimport { useTranslation } from \"next-i18next\";\nimport { Span } from \"src/components/base\";\nimport { WfLinkGhost } from \"src/components/base/wf-link\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { ILink } from \"src/types/common\";\n\nexport interface INewsListItem {\n date: string;\n link: ILink;\n}\nexport interface INewsListProps {\n items: INewsListItem[];\n}\n\nexport const NewsList = ({ items }: INewsListProps) => {\n const { t } = useTranslation(\"common\");\n const { formatWeekDayShortWithTimeShort, formatTimeShort } = useDateTimeFormatter();\n const formatArticleTime = (time: string) => {\n const articleTime = new Date(time);\n const isTodayDate = isToday(articleTime);\n\n if (isTodayDate) {\n return `${t(\"today\")}, ${formatTimeShort(articleTime)}`;\n }\n\n return formatWeekDayShortWithTimeShort(articleTime);\n };\n\n return (\n \n {items.map(({ date, link }) => (\n \n \n \n {formatArticleTime(date)}\n \n \n \n {link.name}\n \n \n \n \n ))}\n \n );\n};\n","import { HStack, List, ListItem, SkeletonText } from \"@chakra-ui/react\";\n\nexport const NewsListSkeleton = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import { useRef } from \"react\";\nimport { useFeedWikifolioNewsQuery } from \"src/api/client/feed-wikifolio-news.api\";\nimport { Section } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { EmptyState } from \"src/components/common/empty-state\";\nimport { useJumpMarkAnchorRefs } from \"src/components/pages/detail/jump-marks/jump-mark-anchor-refs-provider\";\nimport { NewsList } from \"src/components/pages/detail/news/news-list\";\nimport { NewsListSkeleton } from \"src/components/pages/detail/news/news-list-skeleton\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { ITitleAndDescription } from \"src/types/common\";\nimport { EnumJumpMarkSection } from \"../jump-marks/consts\";\n\nconst NEWS_LIST_SECTION_TEST_ID = \"news-feed-section\";\n\nexport interface INewsListSectionProps {\n wikifolioId: string;\n headline: string;\n emptyState: ITitleAndDescription;\n}\n\nexport const NewsListSection = ({ wikifolioId, headline, emptyState }: INewsListSectionProps) => {\n const ref = useRef(null);\n const { scrollName } = useJumpMarkAnchorRefs();\n const isReadyToLoad = scrollName === null || scrollName === EnumJumpMarkSection.Portfolio;\n\n const isSectionVisible = useViewportSpy(isReadyToLoad ? ref : { current: null }, { threshold: 0.5, visibleOnce: true });\n\n const { data, isLoading } = useFeedWikifolioNewsQuery(wikifolioId, { enabled: isSectionVisible });\n\n return (\n
\n \n {headline}\n \n {(isLoading || data === undefined) && }\n {!isLoading && data?.items?.length ? : null}\n {!isLoading && data !== undefined && !data.items?.length ? (\n \n ) : null}\n
\n );\n};\n","import { ArrowLink, IArrowLinkProps } from \"src/components/base/arrow-link\";\nimport { EnumJumpMarkSection } from \"./consts\";\nimport { useJumpToSection } from \"./use-jump-to-section\";\n\ninterface IProps extends Omit {\n section: EnumJumpMarkSection;\n}\n\nexport const JumpMarkLink = ({ section, ...arrowLinkProps }: IProps) => {\n const jumpToSection = useJumpToSection();\n\n return (\n {\n event.preventDefault();\n jumpToSection(section);\n }}\n {...arrowLinkProps}\n />\n );\n};\n","import { proxy, useSnapshot } from \"valtio\";\n// DEV-note, because we want a fast loading (non dropping frames) benchmark/chart and smooth animation we can delay\n// heavy browser work on first page load, that are not on the page view\n// use this state when you need to perform tasks that blocks main thread.\nconst benchmarkReadyStore = proxy({\n isReady: false,\n\n get isBenchmarkReady() {\n return this.isReady;\n },\n\n setIsReady() {\n if (!benchmarkReadyStore.isReady) {\n benchmarkReadyStore.isReady = true;\n }\n },\n});\n\nexport const setIsBenchmarkReady = () => {\n benchmarkReadyStore.setIsReady();\n};\n\nexport function useBenchmarkReadyStore() {\n return useSnapshot(benchmarkReadyStore);\n}\n","import { BoxProps, Flex } from \"@chakra-ui/react\";\nimport dynamic from \"next/dynamic\";\nimport { useTranslation } from \"next-i18next\";\nimport { IPortfolioChartDict } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { EnumJumpMarkSection } from \"../jump-marks/consts\";\nimport { JumpMarkLink } from \"../jump-marks/jump-mark-link\";\nimport { useBenchmarkReadyStore } from \"../store/benchmark-ready-store\";\nimport { LoadingState } from \"./loading-state\";\n\ninterface IPortfolioChartProps extends BoxProps {\n wikifolioId: string;\n dict: IPortfolioChartDict;\n}\n\ninterface IPortfolioChartWrapper extends IPortfolioChartProps {\n isLoggedIn: boolean;\n}\n\nexport const PortfolioChartWrapper = ({ wikifolioId, isLoggedIn, dict, ...boxProps }: IPortfolioChartWrapper) => {\n const PortfolioChart = dynamic(\n () => import(\"src/components/pages/detail/portfolio-chart/portfolio-chart\").then(component => component.PortfolioChart),\n {\n loading: () => ,\n }\n );\n\n const { t } = useTranslation(\"common\");\n const { isBenchmarkReady } = useBenchmarkReadyStore();\n\n return (\n
\n \n \n {dict.title}\n \n {t(\"details\")}\n \n {isBenchmarkReady || !isLoggedIn ? : }\n
\n );\n};\n","import { Box, BoxProps, Flex, Skeleton } from \"@chakra-ui/react\";\n\ninterface ILoadingStateProps extends BoxProps {}\nexport const LoadingState = (props: ILoadingStateProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {[1, 2, 3, 4, 5].map(i => (\n \n \n \n \n \n \n \n \n \n ))}\n \n \n \n \n \n );\n};\n","import { ISortDirection } from \"src/components/table/sort-table\";\n\ntype IOptionalString = string | null | undefined;\ntype IOptionalNumber = number | null | undefined;\n\n/**\n * Sorts passed two strings `a` and `b` for given direction.\n * - case-insensitive\n * - `null`, `undefined` and empty string will **always** put as last (independent of direction!)\n */\nexport const compareString = (a: IOptionalString, b: IOptionalString, direction: ISortDirection) => {\n if (a === b) {\n return 0;\n }\n\n if (!a) {\n return 1;\n }\n\n if (!b) {\n return -1;\n }\n\n return a.localeCompare(b) * (direction === \"desc\" ? 1 : -1);\n};\n\n/**\n * Sorts passed two number `a` and `b` for given direction.\n * - `null` and `undefined` will **always** put as last (independent of direction!)\n */\nexport const compareNumber = (a: IOptionalNumber, b: IOptionalNumber, direction: ISortDirection) => {\n if (a === b) {\n return 0;\n }\n\n if (a === undefined || a === null) {\n // 0 is valid sort number!\n return 1;\n }\n\n if (b === undefined || b === null) {\n // 0 is valid sort number!\n return -1;\n }\n\n return (a - b) * (direction === \"desc\" ? 1 : -1);\n};\n","import { EnumAssetType, IPortfolioGroup, IPortfolioItem, IPortfolioResponse } from \"src/api/client/portfolio-table.api\";\nimport { ISortDirection } from \"src/components/table/sort-table\";\nimport { compareNumber, compareString } from \"src/utils/compare-util\";\nimport { getPerfSinceBuy, getPerfToday } from \"./portfolio-table-util\";\n\nexport type Sorting = {\n column: \"name\" | \"performanceSinceBuy\" | \"performanceToday\" | \"weighting\";\n direction: ISortDirection;\n};\n\nexport const sortPortfolioTableDataByColumn = (data: IPortfolioResponse, { column, direction }: Sorting): IPortfolioResponse => {\n const compareName = (itemA: IPortfolioItem, itemB: IPortfolioItem) => compareString(itemA.name, itemB.name, direction);\n\n const comparePerformanceSinceBuy = (itemA: IPortfolioItem, itemB: IPortfolioItem) => {\n const perfSinceBuyA = getPerfSinceBuy(itemA);\n const perfSinceBuyB = getPerfSinceBuy(itemB);\n return compareNumber(perfSinceBuyA, perfSinceBuyB, direction);\n };\n\n const comparePerformanceToday = (itemA: IPortfolioItem, itemB: IPortfolioItem) => {\n const perfTodayA = getPerfToday(itemA);\n const perfTodayB = getPerfToday(itemB);\n return compareNumber(perfTodayA, perfTodayB, direction);\n };\n\n const compareWeighting = (itemA: IPortfolioItem, itemB: IPortfolioItem) => compareNumber(itemA.percentage, itemB.percentage, direction);\n\n const chooseCompareFunction = () => {\n switch (column) {\n case \"name\":\n return compareName;\n case \"performanceSinceBuy\":\n return comparePerformanceSinceBuy;\n case \"performanceToday\":\n return comparePerformanceToday;\n case \"weighting\":\n return compareWeighting;\n }\n };\n\n return {\n ...data,\n groups: data?.groups?.map(group => ({\n ...group,\n items: group.items.sort(chooseCompareFunction()),\n })),\n };\n};\n\nexport const sortPortfolioTableDataGroups = (data: IPortfolioResponse) => {\n const dataToSort = { ...data, groups: [...data.groups] };\n dataToSort.groups.sort((a, b) => a.type - b.type);\n\n if (dataToSort.groups.length > 0 && dataToSort.groups[0].type === EnumAssetType.Cash) {\n dataToSort.groups.push(dataToSort.groups.shift() as IPortfolioGroup);\n }\n\n return dataToSort;\n};\n","import { RefObject, useEffect, useState } from \"react\";\nimport { usePortfolioTableQuery } from \"src/api/client/portfolio-table.api\";\nimport { ISortDirection } from \"src/components/table/sort-table\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { EnumJumpMarkSection } from \"../jump-marks/consts\";\nimport { useJumpMarkAnchorRefs } from \"../jump-marks/jump-mark-anchor-refs-provider\";\nimport { sortPortfolioTableDataByColumn, Sorting, sortPortfolioTableDataGroups } from \"./sort-utils\";\n\nexport const usePortfolioTable = (fullName: string, sectionRef: RefObject) => {\n const { scrollName } = useJumpMarkAnchorRefs();\n const isReadyToLoadPortfolioTable = scrollName === null || scrollName === EnumJumpMarkSection.Portfolio;\n\n const isVisible = useViewportSpy(isReadyToLoadPortfolioTable ? sectionRef : { current: null }, { threshold: 0.1 });\n\n const { data: rawData, isLoading, isError } = usePortfolioTableQuery(fullName, { enabled: isVisible });\n const [sortedData, setSortedData] = useState(rawData);\n const [sorting, setSorting] = useState();\n\n useEffect(() => {\n if (rawData) {\n const dataWithSortedGroups = sortPortfolioTableDataGroups(rawData);\n const sortedTableData = sorting ? sortPortfolioTableDataByColumn(dataWithSortedGroups, sorting) : dataWithSortedGroups;\n setSortedData(sortedTableData);\n }\n }, [rawData, sorting]);\n\n const onSortName = (direction: ISortDirection) => {\n setSorting({ column: \"name\", direction });\n };\n\n const onSortPerfSinceBuy = (direction: ISortDirection) => {\n setSorting({ column: \"performanceSinceBuy\", direction });\n };\n\n const onSortPerfToday = (direction: ISortDirection) => {\n setSorting({ column: \"performanceToday\", direction });\n };\n\n const onSortWeighting = (direction: ISortDirection) => {\n setSorting({ column: \"weighting\", direction });\n };\n\n return {\n isLoading,\n isError,\n data: sortedData,\n onSortName,\n onSortPerfSinceBuy,\n onSortPerfToday,\n onSortWeighting,\n };\n};\n","import { useRef } from \"react\";\nimport { Box } from \"@chakra-ui/react\";\nimport dynamic from \"next/dynamic\";\nimport { IPortfolioTableDict } from \"src/api/server/wf-detail.types\";\nimport { ErrorState } from \"../shared/error-state\";\nimport { LoadingState } from \"./loading-state\";\nimport { ISortTableWrapper } from \"./sort-table-wrapper\";\nimport { usePortfolioTable } from \"./use-portfolio-table\";\n\nconst SortTableWrapper = dynamic(() => import(\"./sort-table-wrapper\").then(component => component.SortTableWrapper), {\n loading: () => ,\n});\n\ninterface IPortfolioTableProps {\n fullName: string;\n dict: IPortfolioTableDict;\n}\n\nexport const PortfolioTable = ({ fullName, dict }: IPortfolioTableProps) => {\n const sectionRef = useRef(null);\n /**\n * Component starts to fetch data when it is in the screen view.\n */\n const { isLoading, isError, data, onSortName, onSortPerfSinceBuy, onSortPerfToday, onSortWeighting } = usePortfolioTable(fullName, sectionRef);\n\n return (\n \n {isError && (\n \n \n \n )}\n {!isError && !data && }\n {data && (\n \n )}\n \n );\n};\n","import { BoxProps } from \"@chakra-ui/react\";\nimport { IWikifolioDetailDict } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { PortfolioTable } from \"./portfolio-table\";\n\ninterface IProps extends BoxProps {\n fullName: string;\n dict: IWikifolioDetailDict[\"portfolioTable\"];\n}\n\nexport const PortfolioTableSection = ({ fullName, dict, ...boxProps }: IProps) => {\n return (\n
\n \n {dict.title}\n \n \n
\n );\n};\n","import { useRef } from \"react\";\nimport { BoxProps, Flex, AspectRatio, useBoolean } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { ISalesContentData } from \"src/api/server/wf-detail.types\";\nimport { Section, FullSizeFlexCentered } from \"src/components/base\";\nimport { ResponsiveImage } from \"src/components/base/responsive-image\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { SimpleRichText } from \"src/components/common/rich-text/simple-rich-text\";\nimport { IconPlay } from \"src/components/icons\";\n\nconst SALES_SECTION_TEST_ID = \"sales-section\";\n\nexport interface ISalesSectionProps extends BoxProps {\n data: ISalesContentData;\n}\n\nexport const SalesSection = ({ data, ...boxProps }: ISalesSectionProps) => {\n const { t } = useTranslation(\"common\");\n const [isPreviewImageVisible, setPreviewImageVisible] = useBoolean(true);\n const playerRef = useRef(null);\n\n return (\n
\n \n \n {data.title}\n \n \n {data?.description && }\n {data?.video && (\n \n {isPreviewImageVisible && data.video.previewImage?.url ? (\n <>\n \n \n \n \n \n ) : (\n \n )}\n \n )}\n
\n );\n};\n","import { SelectedWikifoliosModule } from \"src/components/modules/selected-wikifolios/selected-wikifolios-module\";\nimport { ISelectedWikifolioData } from \"src/components/modules/selected-wikifolios/selected-wikifolios-module.types\";\nimport { chunkArrayEqually } from \"src/utils/array-util\";\n\nexport interface ISelectedWikifoliosProps {\n headline: string;\n selectedWikifolios: Array | null;\n canCalculateScroll?: boolean;\n}\n\nexport const SelectedWikifolios = ({ headline, selectedWikifolios, canCalculateScroll }: ISelectedWikifoliosProps) => {\n if (!selectedWikifolios) {\n return null;\n }\n\n const wikifolioColumns = chunkArrayEqually(selectedWikifolios, 3);\n\n return (\n \n );\n};\n","import { BoxProps, Flex } from \"@chakra-ui/react\";\nimport { IWikifolioDetailData, IWikifolioDetailDict } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { PopoverButtonIconInfo, WfPopover } from \"src/components/base/wf-popover\";\nimport { Tag } from \"src/components/common/tag/tag\";\nimport { EnumTagColor } from \"src/types/common-enum\";\n\nconst TAG_SECTION_TEST_ID = \"tag-section\";\n\ninterface IProps extends BoxProps {\n dict: IWikifolioDetailDict[\"tagSection\"];\n data: IWikifolioDetailData[\"tagsData\"];\n}\n\nexport const TagSection = ({ dict, data, ...boxProps }: IProps) => {\n return (\n
\n \n \n {dict.title}\n \n \n \n \n \n \n {data.rewards.map((tag, i) => (\n \n ))}\n {data.tradings.map((tag, i) => (\n \n ))}\n {data.investmentHorizon.map((tag, i) => (\n \n ))}\n {data.investmentRegion.map((tag, i) => (\n \n ))}\n {data.basics.map((tag, i) => (\n \n ))}\n {data.bvhChallenge.map((tag, i) => {\n return ;\n })}\n \n
\n );\n};\n","import { Fragment } from \"react\";\nimport { Box, Divider, Grid } from \"@chakra-ui/react\";\nimport { IWikifolioKeyFigure } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { Ranking } from \"src/components/common/ranking/ranking\";\n\ninterface ITopKpiProps {\n keyFigures: IWikifolioKeyFigure[];\n}\n\nexport const TopKpi = ({ keyFigures }: ITopKpiProps) => {\n return (\n
\n \n {keyFigures.map((keyFigure, index) => {\n const isLast = index === keyFigures.length - 1;\n return (\n \n \n \n \n );\n })}\n\n {/* Display 2 divider lines between 4 ranking kpi on Mob and Tab */}\n \n \n \n \n \n
\n );\n};\n","import { Box, BoxProps, MenuButton } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { Button } from \"src/components/base/button\";\nimport { IconShare } from \"src/components/icons\";\nimport { ShareButton } from \"./share-button\";\nimport { useShareLinksBasic } from \"./share-button-util\";\n\nexport interface IShareOption {\n link: string;\n label: string;\n icon?: JSX.Element;\n isHandheld?: boolean;\n}\n\nexport interface IShareWikifolioButtonProps extends BoxProps {\n /** The text content of `` in `<head>` */\n metaTitle: string;\n /** The text content of `<meta name=\"description\">` in `<head>` */\n metaDescription: string;\n /** URL to wikifolio */\n url: string;\n}\n\nexport const ShareWikifolioButton = ({ metaTitle, metaDescription, url, ...boxProps }: IShareWikifolioButtonProps) => {\n const shareOptions = useShareLinksBasic(metaTitle, metaDescription, url);\n const { t } = useTranslation(\"common\");\n\n return (\n <Box {...boxProps}>\n <ShareButton link={url} shareOptions={shareOptions} webShareData={{ title: metaTitle, url, text: metaDescription }}>\n <MenuButton\n as={Button}\n size=\"sm\"\n variant=\"ghost\"\n leftIcon={<IconShare boxSize={3} />}\n w=\"100%\"\n sx={{\n span: { flex: \"0 1 auto\" },\n }}\n className=\"gtm-share\"\n data-gtm-action=\"share wikifolio click\"\n >\n {t(\"share-wikifolio\")}\n </MenuButton>\n </ShareButton>\n </Box>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport { WfLinkGhost } from \"src/components/base/wf-link\";\n\nexport interface ITradernameProfileLinkProps {\n href: string;\n name: string;\n isDeleted: boolean | undefined;\n}\n\nexport const WfTradernameProfileLink = ({ href, name, isDeleted }: ITradernameProfileLinkProps) => {\n return isDeleted ? (\n <Text fontWeight=\"bold\">{name}</Text>\n ) : (\n <WfLinkGhost noOfLines={1} wordBreak=\"break-all\" href={href}>\n {name}\n </WfLinkGhost>\n );\n};\n","import { BoxProps, Divider, Flex, Grid, HStack, IconButton, Image, Stack, Text } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { ArrowLink } from \"src/components/base/arrow-link\";\nimport { Button } from \"src/components/base/button\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { ShareWikifolioButton } from \"src/components/common/buttons/share/share-wikifolio-button\";\nimport { WatchlistButton } from \"src/components/common/buttons/watchlist-button/watchlist-button\";\nimport { Tag } from \"src/components/common/tag/tag\";\nimport { TraderAvatar } from \"src/components/common/trader-avatar\";\nimport { WfTradernameProfileLink } from \"src/components/common/wf-tradername-profile-link\";\nimport { IconPencil, IconTrade } from \"src/components/icons\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useGetUserName } from \"src/hooks/use-get-user-name\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { useWikifolioStore } from \"src/stores/wikifolio-store\";\nimport { EnumTagColor, EnumWikifolioStatus } from \"src/types/common-enum\";\nimport { isServerSide } from \"src/utils/common-util\";\nimport { getFullName } from \"src/utils/user-name-util\";\n\ninterface IProps extends BoxProps {\n headData: {\n metaTitle: string;\n metaDescription: string;\n url: string;\n };\n data: Pick<IWikifolioDetailProps[\"data\"], \"wikifolio\" | \"trader\" | \"tradeLink\" | \"editLink\" | \"myWikifoliosLink\">;\n}\n\nexport const TopSection = ({ headData, data, ...boxProps }: IProps) => {\n const { wikifolio, trader, tradeLink, editLink, myWikifoliosLink } = data;\n const { buildTraderProfileLink } = useLinkBuilder();\n const { formatDateShort } = useDateTimeFormatter();\n const userStore = useUserStore();\n const { watchlist, setOnWatchlist } = useWikifolioStore();\n const isOnWatchlist = watchlist[wikifolio.id] ?? false;\n const { t } = useTranslation([\"common\", \"wf-detail\"]);\n const getUserName = useGetUserName();\n\n const isInvestable = wikifolio.status === EnumWikifolioStatus.Investable;\n const showShareButton = wikifolio.status !== EnumWikifolioStatus.Test && wikifolio.status !== EnumWikifolioStatus.PublishingRequested;\n\n const currentUrl = isServerSide() ? \"\" : `${window.location.origin}${window.location.pathname}`;\n\n const hasFullNameAndNickName = !trader.isDeleted && !trader.companyName && Boolean(getFullName(trader) && trader.nickName);\n const traderProfileLink = buildTraderProfileLink(trader.nickName);\n\n return (\n <Section {...boxProps}>\n {userStore.isCurrentUser(trader) && (\n <Stack mb={3} direction={[\"column\", \"row\"]} align={[\"initial\", \"center\"]} justifyContent=\"space-between\" spacing={3}>\n <ArrowLink href={myWikifoliosLink} colorScheme=\"green\">\n {t(\"to-my-wikifolios\")}\n </ArrowLink>\n <Grid templateColumns={[\"1fr 1fr\", \"auto auto\"]} gridColumnGap={2}>\n <IconButton\n as={WfLinkUnstyled}\n href={editLink}\n size=\"sm\"\n variant=\"outline\"\n aria-label={t(\"edit-wikifolio\")}\n icon={<IconPencil />}\n />\n <Button\n as={WfLinkUnstyled}\n href={tradeLink}\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<IconTrade />}\n className=\"gtm-wf-dbcard__trade\"\n >\n Trade\n </Button>\n </Grid>\n </Stack>\n )}\n <WfHeading as=\"h1\" mb={3} fontSize={[\"2xl\", \"3xl\", \"4xl\"]}>\n {wikifolio.shortDescription}\n </WfHeading>\n <Grid templateColumns={[\"1fr\", \"1fr auto\"]} gridRowGap={4} gridColumnGap={1}>\n <HStack spacing={0}>\n <TraderAvatar href={traderProfileLink} mr={[1, 2]} size={[\"xl\", \"2xl\"]} trader={trader} loading=\"eager\" />\n <Flex flexDir=\"column\" overflow=\"hidden\">\n <Grid templateColumns=\"auto 1fr\" fontSize={[\"md\", \"lg\", \"xl\"]} mb={0.5}>\n <WfTradernameProfileLink\n href={traderProfileLink}\n name={trader.companyName || getUserName(trader)}\n isDeleted={trader.isDeleted}\n />\n\n {hasFullNameAndNickName && (\n <Text display={[\"none\", \"none\", \"block\"]} noOfLines={1} wordBreak=\"break-all\">\n  {`| ${trader.nickName}`}\n </Text>\n )}\n </Grid>\n <Text fontSize=\"xs\" color=\"gray.400\">\n {t(\"last-login\")}: {formatDateShort(trader.lastLogin)}\n </Text>\n {trader.isSelfRegulatedAssetManager && (\n <Tag\n label={t(\"sro\")}\n tooltip={trader.selfRegulatedAssetManagerTooltip}\n color={EnumTagColor.Gray}\n alignSelf={\"flex-start\"}\n mt={\"0.5\"}\n px={1}\n py={0}\n h={\"auto\"}\n borderColor={\"gray.400\"}\n fontSize=\"2xs\"\n />\n )}\n </Flex>\n {trader.profileLogoData && (\n <Image\n pl={3}\n maxH=\"48px\"\n maxW=\"128px\"\n src={trader.profileLogoData}\n alt={t(\"company-logo-of\", { ns: \"wf-detail\", companyName: trader?.companyName })}\n />\n )}\n </HStack>\n <Grid alignItems=\"center\" templateColumns={isInvestable ? [\"1fr 1fr\", \"auto auto\"] : [\"1fr\", \"auto\"]} gridColumnGap={2}>\n {showShareButton && (\n <ShareWikifolioButton url={currentUrl} metaTitle={headData.metaTitle} metaDescription={headData.metaDescription} />\n )}\n {isInvestable && (\n <WatchlistButton\n size=\"sm\"\n wikifolioId={wikifolio.id}\n wikifolioShortDescription={wikifolio.shortDescription}\n isOnWatchlist={isOnWatchlist}\n setOnWatchlist={setOnWatchlist}\n />\n )}\n </Grid>\n </Grid>\n <Divider mt={3} borderColor=\"gray.100\" display={[\"block\", \"none\"]} />\n </Section>\n );\n};\n","import { Box, BoxProps, Flex, Skeleton } from \"@chakra-ui/react\";\n\ninterface ILoadingStateProps extends BoxProps {}\nexport const LoadingState = (props: ILoadingStateProps) => {\n return (\n <Box aria-hidden={true} {...props}>\n <Flex align=\"center\" justify=\"space-between\" h={9} borderY=\"2px solid\" borderColor=\"gray.100\">\n <Box flexGrow={1}>\n <Skeleton h={1} w={8} />\n </Box>\n <Skeleton h={1} w={8} flexShrink={0} ml={4} />\n <Skeleton h={1} w={8} flexShrink={0} ml={4} display={[\"none\", \"block\"]} />\n <Skeleton h={1} w={8} flexShrink={0} ml={4} display={[\"none\", \"block\"]} />\n <Skeleton h={1} w={8} flexShrink={0} ml={4} display={[\"none\", \"block\"]} />\n </Flex>\n {[1, 2, 3, 4, 5, 6, 7].map(i => (\n <Flex key={i} align=\"center\" justify=\"space-between\" h={8} borderBottom=\"1px\" borderColor=\"gray.100\">\n <Box flexGrow={1}>\n <Skeleton h={1} w={15} />\n </Box>\n <Skeleton h={1} w={8} flexShrink={0} ml={4} />\n <Skeleton h={1} w={8} flexShrink={0} ml={4} display={[\"none\", \"block\"]} />\n <Skeleton h={1} w={8} flexShrink={0} ml={4} display={[\"none\", \"block\"]} />\n <Skeleton h={1} w={8} flexShrink={0} ml={4} display={[\"none\", \"block\"]} />\n </Flex>\n ))}\n </Box>\n );\n};\n","import { DAY_IN_MS } from \"src/consts/time\";\n\nexport const isSameYear = (date1: Date, date2: Date) => date1.getFullYear() === date2.getFullYear();\n\nexport const isSameYearAndMonth = (date1: Date, date2: Date) => isSameYear(date1, date2) && date1.getMonth() === date2.getMonth();\n\n/**\n * Returns false if argument is Invalid Date and true otherwise.\n */\nconst isValid = (date: unknown): boolean => {\n return !isNaN(Number(date));\n};\n\n/**\n * Get the number of full day periods between the given dates.\n *\n * Returns difference in days, positive number, 0 if date are invalid.\n */\nexport const differenceInDays = (dateLeft: Date, dateRight: Date) => {\n if (isValid(dateLeft) && isValid(dateRight)) {\n const difference = dateLeft.getTime() - dateRight.getTime();\n return Math.abs(Math.ceil(difference / DAY_IN_MS));\n }\n return 0;\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { ITradeHistoryOrder } from \"src/api/client/trade-history.api.types\";\nimport { SpanBox } from \"src/components/base\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { isSameYear, isSameYearAndMonth } from \"src/utils/date-util\";\n\nexport const TimeSpan = ({ orders }: { orders: ITradeHistoryOrder[] }) => {\n const { formatMonthShort, formatMonthShortYear } = useDateTimeFormatter();\n\n const endDate = new Date(orders[0].executionDate);\n const startDate = new Date(orders[orders.length - 1].executionDate);\n\n if (isSameYearAndMonth(startDate, endDate)) {\n return (\n <Box fontSize=\"sm\" fontWeight=\"semibold\" textAlign=\"center\">\n {formatMonthShortYear(endDate)}\n </Box>\n );\n }\n\n if (!isSameYear(startDate, endDate)) {\n return (\n <Box fontSize=\"sm\" fontWeight=\"semibold\" textAlign=\"center\">\n <SpanBox whiteSpace=\"nowrap\">{formatMonthShortYear(startDate)}</SpanBox>\n {\" - \"}\n <SpanBox whiteSpace=\"nowrap\">{formatMonthShortYear(endDate)}</SpanBox>\n </Box>\n );\n }\n\n return (\n <Box fontSize=\"sm\" fontWeight=\"semibold\" textAlign=\"center\">\n <SpanBox whiteSpace=\"nowrap\">{formatMonthShort(startDate)}</SpanBox>\n {\" - \"}\n <SpanBox whiteSpace=\"nowrap\">{formatMonthShortYear(endDate)}</SpanBox>\n </Box>\n );\n};\n","import { UseQueryOptions } from \"react-query\";\nimport { createApiWikifolioTradeHistoryUrl } from \"src/consts/urls\";\nimport { useQuery } from \"src/hooks/react-query/use-query\";\nimport { ITradeHistoryResponse } from \"./trade-history.api.types\";\n\nconst PAGE_SIZE = 10;\n\nexport const useTradeHistoryTableQuery = (wikifolioId: string, page: number, options: UseQueryOptions<ITradeHistoryResponse>) => {\n const queryParams = new URLSearchParams();\n queryParams.set(\"page\", `${page}`);\n queryParams.set(\"pageSize\", `${PAGE_SIZE}`);\n return useQuery<ITradeHistoryResponse>(createApiWikifolioTradeHistoryUrl(wikifolioId), {\n retry: 0,\n keepPreviousData: true,\n queryParams,\n ...options,\n });\n};\n","import { RefObject, useEffect, useState } from \"react\";\nimport { useTradeHistoryTableQuery } from \"src/api/client/trade-history.api\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { scrollIntoView } from \"src/utils/dom\";\nimport { EnumJumpMarkSection } from \"../jump-marks/consts\";\nimport { useJumpMarkAnchorRefs } from \"../jump-marks/jump-mark-anchor-refs-provider\";\n\nexport const useTradeHistoryTable = (wikifolioId: string, sectionRef: RefObject<HTMLDivElement>) => {\n const isVisible = useViewportSpy(sectionRef, { threshold: 0.1 });\n const [enabled, setEnabled] = useState(false);\n const { getRef } = useJumpMarkAnchorRefs();\n\n const [page, setPage] = useState(0);\n const { isLoading, isError, data, isFetching, isPreviousData } = useTradeHistoryTableQuery(wikifolioId, page, { enabled: isVisible });\n\n useEffect(() => {\n if (isVisible && !enabled) {\n setEnabled(true);\n }\n }, [enabled, isVisible]);\n\n const handleScrollIntoView = () => {\n const jumpMarkAnchorRef = getRef(EnumJumpMarkSection.Trades);\n const isLastPage = data?.tradeHistory.pageCount && data.tradeHistory.pageCount - 1 === page + 1;\n\n if (jumpMarkAnchorRef && isLastPage) {\n scrollIntoView(jumpMarkAnchorRef, { behavior: \"smooth\" });\n }\n };\n\n return {\n isLoading,\n isError,\n data,\n newerBtnProps: {\n onClick: () => setPage(old => Math.max(old - 1, 0)),\n isDisabled: isFetching || page === 0,\n },\n olderBtnProps: {\n onClick: () => {\n if (!isPreviousData && data && data.tradeHistory.pageCount > page) {\n setPage(old => old + 1);\n }\n\n handleScrollIntoView();\n },\n isDisabled:\n isFetching ||\n // Dev-Note: In case there is no trade-history -> pageCount is 0.\n data?.tradeHistory.pageCount === 0 ||\n data?.tradeHistory.pageCount === page + 1,\n },\n };\n};\n","import { useRef } from \"react\";\nimport { BoxProps, HStack } from \"@chakra-ui/react\";\nimport dynamic from \"next/dynamic\";\nimport { useTranslation } from \"next-i18next\";\nimport { ITradeHistoryTableDict } from \"src/api/server/wf-detail.types\";\nimport { Section } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { EmptyState } from \"src/components/common/empty-state\";\nimport { ErrorState } from \"../shared/error-state\";\nimport { LoadingState } from \"./loading-state\";\nimport { TimeSpan } from \"./time-span\";\nimport { ITradeHistoryTableProps } from \"./trade-history-table\";\nimport { useTradeHistoryTable } from \"./use-trade-history-table\";\n\nconst TradeHistoryTable = dynamic<ITradeHistoryTableProps>(() => import(\"./trade-history-table\").then(component => component.TradeHistoryTable), {\n loading: () => <LoadingState />,\n});\n\ninterface ITradeHistorySectionProps extends BoxProps {\n wikifolioId: string;\n dict: ITradeHistoryTableDict;\n}\n\nexport const TradeHistorySection = ({ wikifolioId, dict, ...boxProps }: ITradeHistorySectionProps) => {\n const { t } = useTranslation(\"wf-detail\");\n const sectionRef = useRef<HTMLDivElement>(null);\n const { isLoading, isError, data, newerBtnProps, olderBtnProps } = useTradeHistoryTable(wikifolioId, sectionRef);\n\n return (\n <Section ref={sectionRef} {...boxProps}>\n <WfHeading as=\"h2\" fontSize=\"2xl\" mb={3}>\n {dict.title}\n </WfHeading>\n {!data && <LoadingState animation={isLoading ? \"initial\" : \"none\"} />}\n {isError && (\n <ErrorState>\n <LoadingState sx={{ div: { animation: \"none\" } }} />\n </ErrorState>\n )}\n {data &&\n (data.tradeHistory.orders.length > 0 ? (\n <>\n <TradeHistoryTable orders={data.tradeHistory.orders} isSuperWikifolio={data.tradeHistory.isSuperWikifolio} />\n <HStack justify=\"space-between\" align=\"center\" spacing={1} mt={[3, 3, 5]}>\n <Button variant=\"outline\" size={[\"xs\", \"sm\"]} className=\"gtm-newer-history\" {...newerBtnProps}>\n {t(\"newer\")}\n </Button>\n <TimeSpan orders={data.tradeHistory.orders} />\n <Button variant=\"outline\" size={[\"xs\", \"sm\"]} className=\"gtm-older-history\" {...olderBtnProps}>\n {t(\"older\")}\n </Button>\n </HStack>\n </>\n ) : (\n <EmptyState {...dict.empty} />\n ))}\n </Section>\n );\n};\n","import { Menu, MenuProps, MenuItemProps, MenuButton, MenuItem, MenuList } from \"@chakra-ui/react\";\nimport { IInvestmentUniverseGroup } from \"src/api/server/wf-detail.types\";\nimport { SpanBox, SpanFlex } from \"src/components/base\";\nimport { IconCaret } from \"src/components/icons\";\n\nconst InvestmentUniverseItem = (props: MenuItemProps) => (\n <MenuItem py={1} height=\"auto\" fontSize=\"sm\" _hover={{ bg: \"white\" }} _focus={{ bg: \"white\" }} {...props} />\n);\n\ninterface IInvestmentUniverseGroupProps extends Omit<MenuProps, \"children\">, IInvestmentUniverseGroup {}\n\nexport const InvestmentUniverseGroup = ({ universeGroupName, universes, ...props }: IInvestmentUniverseGroupProps) => {\n const isCrossedOut = universes.every(universe => universe.isCrossedOut);\n const availableCount = universes.length;\n const assignedCount = universes.filter(universe => !universe.isCrossedOut).length;\n\n return (\n <Menu {...props}>\n {({ isOpen, onClose }) => (\n <>\n <MenuButton\n pos=\"relative\"\n disabled={false}\n border=\"1px\"\n borderColor={isCrossedOut ? \"gray.50\" : \"gray.800\"}\n bg={isCrossedOut ? \"gray.50\" : undefined}\n color={isCrossedOut ? \"gray.200\" : undefined}\n borderRadius=\"16px\"\n py={1}\n px={2}\n _hover={{\n bg: \"gray.50\",\n }}\n >\n <SpanFlex align=\"center\" lineHeight=\"normal\">\n <SpanBox\n h={2}\n lineHeight=\"16px\"\n fontSize=\"sm\"\n fontWeight=\"bold\"\n mr={0.5}\n textDecor={isCrossedOut ? \"line-through\" : undefined}\n >\n {universeGroupName}\n </SpanBox>\n <SpanBox borderRadius=\"16px\" px={1} py=\"2px\" bg=\"gray.500\" color=\"white\" fontSize=\"2xs\" fontWeight=\"semibold\" mr={1}>\n {assignedCount} / {availableCount}\n </SpanBox>\n <IconCaret boxSize={2} transition=\"transform 0.3s\" transform={isOpen ? \"rotate(180deg)\" : undefined} />\n </SpanFlex>\n </MenuButton>\n <MenuList onClick={onClose} cursor=\"pointer\">\n {universes.map(({ universeId, name, isCrossedOut }) => (\n <InvestmentUniverseItem\n key={universeId}\n sx={isCrossedOut ? { opacity: 1, color: \"gray.200\", textDecor: \"line-through\" } : undefined}\n onClick={onClose}\n >\n {name}\n </InvestmentUniverseItem>\n ))}\n </MenuList>\n </>\n )}\n </Menu>\n );\n};\n","import { Box, BoxProps, Flex, Text } from \"@chakra-ui/react\";\nimport { IInvestmentUniverse, IWikifolioDetailDict } from \"src/api/server/wf-detail.types\";\nimport { PopoverButtonIconInfo, WfPopover } from \"src/components/base/wf-popover\";\nimport { InvestmentUniverseGroup } from \"./investment-universe-group\";\n\nconst INVESTMENT_UNIVERSE_TEST_ID = \"investment-universe\";\n\ninterface IProps extends BoxProps {\n data: IInvestmentUniverse;\n dict: Pick<IWikifolioDetailDict, \"investmentUniverseTitle\" | \"superWikifolioInvestmentUniverseParagraph\">;\n}\n\nexport const InvestmentUniverse = ({ data, dict, ...boxProps }: IProps) => {\n const { universeGroups, tooltip } = data;\n\n return (\n <Box data-test-id={INVESTMENT_UNIVERSE_TEST_ID} {...boxProps}>\n <Flex align=\"center\" pt={2}>\n <Box as=\"h3\" fontWeight=\"bold\" fontSize=\"lg\">\n {dict.investmentUniverseTitle}\n </Box>\n <WfPopover {...tooltip}>\n <PopoverButtonIconInfo ariaLabel={dict.investmentUniverseTitle} ml={1} />\n </WfPopover>\n </Flex>\n {dict.superWikifolioInvestmentUniverseParagraph && <Text mt={1}>{dict.superWikifolioInvestmentUniverseParagraph}</Text>}\n <Flex mt={3} flexWrap=\"wrap\" gap={2}>\n {universeGroups.map(data => (\n <InvestmentUniverseGroup key={data.universeGroupId} {...data} />\n ))}\n </Flex>\n </Box>\n );\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { IMasterDataItem } from \"src/api/server/wf-detail.types\";\nimport { PopoverButtonIconInfo, WfPopover } from \"src/components/base/wf-popover\";\n\ninterface IMasterDataItemProps extends IMasterDataItem<string> {}\n\nexport const MasterDataItem = ({ label, value, tooltip }: IMasterDataItemProps) => (\n <Flex justifyContent=\"space-between\">\n <Flex align=\"center\">\n {label}\n {tooltip && (\n <WfPopover content={tooltip.content} link={tooltip.link}>\n <PopoverButtonIconInfo ariaLabel={label} ml={1} />\n </WfPopover>\n )}\n </Flex>\n <Text fontWeight=\"semibold\">{value}</Text>\n </Flex>\n);\n","import { Stack, StackDivider } from \"@chakra-ui/react\";\nimport { IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { useDetailPageStore } from \"src/stores/detail-page-store\";\nimport { MasterDataItem } from \"./master-data-item\";\n\nconst MASTER_DATA_TEST_ID = \"master-data\";\n\ninterface IMasterDataProps {\n masterData: IWikifolioDetailProps[\"data\"][\"masterData\"];\n}\n\nexport const MasterData = ({ masterData }: IMasterDataProps) => {\n const { formatNumber } = useNumberFormatter();\n const { formatDateShort } = useDateTimeFormatter();\n\n const { indexLevel } = useDetailPageStore();\n const formattedIndexLevel = indexLevel ? formatNumber(indexLevel, 1) : \"-\";\n\n return (\n <Stack divider={<StackDivider borderColor=\"gray.100\" />} spacing={2} data-test-id={MASTER_DATA_TEST_ID}>\n <MasterDataItem {...masterData.symbol} />\n <MasterDataItem {...masterData.creationDate} value={formatDateShort(new Date(masterData.creationDate.value))} />\n <MasterDataItem {...masterData.indexLevel} value={formattedIndexLevel} />\n {masterData.highWatermark && <MasterDataItem {...masterData.highWatermark} value={formatNumber(masterData.highWatermark.value, 1)} />}\n </Stack>\n );\n};\n","import { Text, useBoolean } from \"@chakra-ui/react\";\nimport { ITradingIdeaSectionDict, IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { SpanBox } from \"src/components/base\";\nimport { ExpandableText } from \"src/components/common/expandable-text\";\n\nconst TRADING_IDEA_CONTENT_TEST_ID = \"trading-idea-content\";\nconst TRADING_IDEA_TOGGLE_TRANSLATION_TEST_ID = \"trading-idea-toggle-translation\";\n\nexport interface ITradingIdeaProps {\n dict: ITradingIdeaSectionDict;\n isTranslationNecessary: IWikifolioDetailProps[\"data\"][\"isTranslationNecessary\"];\n description: IWikifolioDetailProps[\"data\"][\"wikifolio\"][\"description\"];\n canCalculateHeight?: boolean;\n}\n\nexport const TradingIdea = ({ dict, isTranslationNecessary, description, canCalculateHeight }: ITradingIdeaProps) => {\n const [isTranslatedDescriptionDisplayed, setIsTranslatedDescriptionDisplayed] = useBoolean(true);\n\n return (\n <>\n <ExpandableText\n formattingType=\"plainText\"\n text={isTranslatedDescriptionDisplayed ? description.content : description.originalContent}\n textProps={{ whiteSpace: \"pre-line\" }}\n noOfLines={4}\n data-test-id={TRADING_IDEA_CONTENT_TEST_ID}\n canCalculateHeight={canCalculateHeight}\n />\n\n {isTranslationNecessary &&\n (description.isTranslationAvailable ? (\n <>\n <Text color=\"gray.400\" whiteSpace=\"pre-line\">\n {isTranslatedDescriptionDisplayed ? dict.contentTranslatedByWikifolio : dict.originalWikifolioDescriptionContent}\n </Text>\n <SpanBox\n role=\"button\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n onClick={setIsTranslatedDescriptionDisplayed.toggle}\n data-test-id={TRADING_IDEA_TOGGLE_TRANSLATION_TEST_ID}\n >\n {isTranslatedDescriptionDisplayed ? dict.showOriginalText : dict.showTranslatedText}\n </SpanBox>\n </>\n ) : (\n <Text color=\"gray.400\">{dict.contentNotAvailableInLanguage}</Text>\n ))}\n </>\n );\n};\n","import { useRef } from \"react\";\nimport { Box, Stack } from \"@chakra-ui/react\";\nimport { IWikifolioDetailData, IWikifolioDetailDict } from \"src/api/server/wf-detail.types\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { useBenchmarkReadyStore } from \"../store/benchmark-ready-store\";\nimport { InvestmentUniverse } from \"./investment-universe\";\nimport { MasterData } from \"./master-data\";\nimport { TradingIdea } from \"./trading-idea\";\n\nexport interface ITradingIdeaSectionProps {\n isTranslationNecessary: IWikifolioDetailData[\"isTranslationNecessary\"];\n description: IWikifolioDetailData[\"wikifolio\"][\"description\"];\n masterData: IWikifolioDetailData[\"masterData\"];\n investmentUniverseData: IWikifolioDetailData[\"investmentUniverseData\"];\n dict: Pick<IWikifolioDetailDict, \"tradingIdeaSection\" | \"investmentUniverseTitle\" | \"superWikifolioInvestmentUniverseParagraph\">;\n}\n\nexport const TradingIdeaSection = (props: ITradingIdeaSectionProps) => {\n const { dict, isTranslationNecessary, description, masterData, investmentUniverseData } = props;\n const { isBenchmarkReady } = useBenchmarkReadyStore();\n const ref = useRef<HTMLDivElement>(null);\n const isVisible = useViewportSpy(isBenchmarkReady ? { current: null } : ref, { visibleOnce: true });\n\n return (\n <Stack ref={ref} as=\"section\" spacing={3} mb={4}>\n <WfHeading as=\"h2\" fontSize=\"2xl\">\n {dict.tradingIdeaSection.tradingIdeaTitle}\n </WfHeading>\n <TradingIdea\n canCalculateHeight={isVisible || isBenchmarkReady}\n dict={dict.tradingIdeaSection}\n isTranslationNecessary={isTranslationNecessary}\n description={description}\n />\n\n <Stack spacing={5} direction={[\"column\", \"row\"]} justifyContent=\"space-between\" fontSize=\"sm\">\n <Box width=\"100%\">\n <Box as=\"h3\" mb={3} pt={2} fontWeight=\"bold\" fontSize=\"lg\">\n {dict.tradingIdeaSection.masterDataTitle}\n </Box>\n <MasterData masterData={masterData} />\n </Box>\n </Stack>\n {investmentUniverseData && <InvestmentUniverse data={investmentUniverseData} dict={dict} />}\n </Stack>\n );\n};\n","interface IProps {\n boxSize?: string;\n fill?: string;\n}\n\nexport const getIconWikifolioHtml = ({ boxSize = \"16px\", fill = \"currentColor\" }: IProps) =>\n `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' style='width: ${boxSize}; height: ${boxSize};'><g transform='translate(1 2)' fill='${fill}'><polygon points='10.921 0 8.8514 8.9793 7.5153 3.2863 4.8765 3.2863 3.5401 8.9793 2.8857 5.8771 0 5.8771 1.7471 12 4.9272 12 6.1958 7.0704 7.4643 12 10.645 12 14 0'></polygon></g></svg>`;\n","import { getIconWikifolioHtml } from \"src/utils/icon-html-string\";\nimport { CLASS_BENCHMARK_HEADER } from \"./configs\";\nimport { CLASS_BENCHMARK_TOOLTIP, CLASS_CHART_TOOLTIP } from \"./utils/chart-util\";\n\nexport const CHART_TOOLTIP_STYLES = {\n [\"& *\"]: {\n fontFamily: \"body\",\n color: \"white\",\n textAlign: \"center\",\n },\n [\".\" + CLASS_CHART_TOOLTIP]: {\n fontSize: \"md\",\n bg: \"gray.800\",\n minW: \"165px\",\n p: 1,\n rounded: \"8px\",\n div: {\n fontSize: \"xs\",\n mt: \"2px\",\n },\n },\n [\".\" + CLASS_BENCHMARK_TOOLTIP]: {\n fontSize: \"md\",\n display: \"flex\",\n alignItems: \"center\",\n px: 2,\n py: 1,\n rounded: \"8px\",\n strong: {\n ml: 2,\n },\n [\".chart-wf-chart-icon\"]: {\n _before: {\n content: `url(\"data:image/svg+xml;utf8,${getIconWikifolioHtml({ fill: \"white\" })}\")`,\n display: \"inline-block\",\n boxSize: \"1em\",\n mt: 0.5,\n },\n },\n },\n \".highcharts-label-box\": {\n fill: \"transparent\",\n },\n [\".highcharts-tooltip-header\"]: {\n top: \"4px !important\", // Benchmark date tooltip on top\n },\n [\".\" + CLASS_BENCHMARK_HEADER]: {\n color: \"gray.800\",\n bg: \"white\",\n fontWeight: \"bold\",\n fontSize: \"12px\",\n },\n};\n","import { MutableRefObject, useEffect, useRef } from \"react\";\nimport { Box, BoxProps, useToken } from \"@chakra-ui/react\";\nimport Highstock from \"highcharts/highstock\";\nimport HighchartsAccessibility from \"highcharts/modules/accessibility\";\nimport { useTranslation } from \"next-i18next\";\nimport { ChartLoadingState } from \"src/components/common/chart-shared-components/chart-loading-state\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { isServerSide, getObjectCopy, useIsomorphicLayoutEffect } from \"src/utils/common-util\";\nimport { ChartNoDataState } from \"../chart-shared-components/chart-no-data-state\";\nimport { CHART_TOOLTIP_STYLES } from \"./chart-tooltip-style\";\nimport { getChartConfig, getChartGlobalConfig } from \"./configs\";\n\ninterface IChartProps extends BoxProps {\n chartRef: MutableRefObject<Highstock.Chart | null>;\n isLoading: boolean;\n baseCurrency: string;\n chartAriaLabel?: string;\n onZoom: () => void;\n series?: Highstock.SeriesOptionsType;\n // Callback when chart finishes animation or has no data\n onChartReady?: () => void;\n}\n\nexport const Chart = ({ chartRef, isLoading, baseCurrency, chartAriaLabel, onZoom, onChartReady, series, ...boxProps }: IChartProps) => {\n const ref = useRef<HTMLDivElement>(null);\n\n const [gray200, gray500, gray800] = useToken(\"colors\", [\"gray.200\", \"gray.500\", \"gray.800\"]);\n const dateTimeFormatter = useDateTimeFormatter();\n const numberFormatter = useNumberFormatter();\n const { t } = useTranslation(\"date-range\");\n\n const chartHasNoData = !isLoading && !series;\n\n if (chartHasNoData) {\n onChartReady?.();\n }\n\n useEffect(() => {\n if (!isServerSide()) {\n HighchartsAccessibility(Highstock);\n }\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (!series) {\n return;\n }\n\n // Dev-Note: The `series` object has to serialized!\n // Otherwise by replacing the series data with new one (e.g. `series[0].setData(newSeries)`)\n // It UPDATES the original series object with the new one!\n const _series = getObjectCopy(series);\n\n Highstock.setOptions(getChartGlobalConfig(t, chartAriaLabel));\n chartRef.current = Highstock.chart(\n ref.current!,\n getChartConfig(\n { dateTimeFormatter, numberFormatter },\n {\n gray200,\n gray500,\n gray800,\n series: {\n ..._series,\n events: {\n afterAnimate: onChartReady,\n },\n },\n baseCurrency,\n onZoom,\n }\n )\n );\n }, [series]);\n\n return (\n <Box pos=\"relative\" pointerEvents=\"fill\">\n <Box ref={ref} maxW=\"100%\" sx={CHART_TOOLTIP_STYLES} {...boxProps} />\n {isLoading && <ChartLoadingState {...boxProps} />}\n {chartHasNoData && <ChartNoDataState {...boxProps} />}\n </Box>\n );\n};\n","import { HOUR_IN_MS } from \"src/consts/time\";\nimport {\n createApiWikifolioPriceIndexUrl,\n createApiWikifolioClosePriceIndexUrl,\n createApiWikifolioBenchmarkIndexUrl,\n createApiWikifolioBenchmarkUnderlyingUrl,\n} from \"src/consts/urls\";\nimport { useQueries, useQuery } from \"src/hooks/react-query/use-query\";\n\nexport interface IPriceIndexResponse {\n timestamps: string[];\n values: number[];\n volumes: number[];\n creationDate: string;\n publishDate: string | null;\n emissionDate: string | null;\n todaysFirstTick: string | null;\n}\n\nexport function useWfPriceIndexQuery(wikifolioId: string, retry = 0) {\n return useQuery<IPriceIndexResponse>(createApiWikifolioPriceIndexUrl(wikifolioId), {\n staleTime: HOUR_IN_MS,\n retry: retry,\n });\n}\n\nexport function useWfClosePriceIndexQuery(wikifolioId: string, enabled: boolean) {\n return useQuery<IPriceIndexResponse>(createApiWikifolioClosePriceIndexUrl(wikifolioId), {\n staleTime: HOUR_IN_MS,\n enabled,\n });\n}\n\ninterface IBenchmarksRequest {\n isin: string;\n wikifolioId: string;\n enabled: boolean;\n isDynamic: boolean;\n}\n\nconst getBenchmarkQueriesUrl = ({ isDynamic, isin, wikifolioId }: Omit<IBenchmarksRequest, \"enabled\">): string => {\n if (isDynamic) {\n return wikifolioId ? createApiWikifolioClosePriceIndexUrl(wikifolioId) : createApiWikifolioBenchmarkUnderlyingUrl(isin);\n }\n return createApiWikifolioBenchmarkIndexUrl(isin);\n};\nexport function useBenchmarkQueries(benchmarks: IBenchmarksRequest[]) {\n return useQueries(\n benchmarks.map(({ isin, wikifolioId, enabled, isDynamic }) => {\n const url = getBenchmarkQueriesUrl({ isDynamic, wikifolioId, isin });\n\n return {\n url,\n options: {\n enabled,\n staleTime: HOUR_IN_MS,\n },\n };\n })\n );\n}\n","import { ChangeEvent, useCallback, useEffect, useRef, useState, useMemo } from \"react\";\nimport { useToken } from \"@chakra-ui/react\";\nimport { SeriesLineOptions } from \"highcharts/highstock\";\nimport { IPriceIndexResponse, useBenchmarkQueries } from \"src/api/client/price-chart.api\";\nimport { getBenchmarkPriceTick, mapBenchmarkNamesToBenchmarkSeries } from \"src/components/common/benchmark//utils/chart-util\";\nimport { isDynamicBenchmark } from \"src/components/common/benchmark//utils/utils\";\nimport { IBenchmarkIndexListStatic } from \"src/components/common/benchmark/configs\";\nimport { BENCHMARKS } from \"src/consts/local-storage\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { localStorage } from \"src/utils/storage\";\n\nconst MAX_ITEMS_TO_COMPARE = 3;\n\nexport interface IBenchmarkIndexListDynamic {\n isin: string;\n wikifolioId: string;\n label: string;\n colorScheme: string;\n /** The benchmark was added by typeahead selection */\n isDynamic: boolean;\n}\n\ninterface IBenchmarksLocalStorage {\n selected?: string[];\n dynamicIndexList?: IBenchmarkIndexListDynamic[];\n userId: null;\n}\n\nexport const useBenchmarkState = (defaultBenchmarksList: IBenchmarkIndexListStatic[]) => {\n const preselectedBenchmarks = defaultBenchmarksList.filter(item => item.isSelectedByDefault).map(item => item.label);\n const [selectedBenchmarks, setSelectedBenchmarks] = useState(new Set<string>(preselectedBenchmarks));\n const [isPublishChecked, setPublishChecked] = useState(false);\n const [isEmissionChecked, setEmissionChecked] = useState(false);\n const [selectedBenchmarksSeries, setSelectedBenchmarksSeries] = useState<SeriesLineOptions[] | null>(null);\n const userStore = useUserStore();\n const [benchmarkListDynamic, setBenchmarkListDynamic] = useState<IBenchmarkIndexListDynamic[] | []>([]);\n\n const benchmarkIndexList: (IBenchmarkIndexListDynamic | IBenchmarkIndexListStatic)[] = useMemo(\n () => [...defaultBenchmarksList, ...benchmarkListDynamic],\n [benchmarkListDynamic, defaultBenchmarksList]\n );\n\n const benchmarkColors = useToken(\n \"colors\",\n benchmarkIndexList.map(b => b.colorScheme + \".600\")\n );\n const dateTimeFormatter = useDateTimeFormatter();\n\n const benchmarkQueries = useBenchmarkQueries(\n benchmarkIndexList.map(b => {\n if (isDynamicBenchmark(b)) {\n return {\n isin: b.isin,\n wikifolioId: b.wikifolioId,\n enabled: selectedBenchmarks.has(b.label),\n isDynamic: b.isDynamic,\n };\n }\n\n return {\n isin: b.isin,\n wikifolioId: \"\",\n enabled: selectedBenchmarks.has(b.label),\n isDynamic: false,\n };\n })\n );\n const benchmarkSeriesMap = useRef<Map<string, SeriesLineOptions>>(new Map()).current;\n benchmarkQueries.forEach((query, index) => {\n if (!query.data) {\n return;\n }\n\n const { label } = benchmarkIndexList[index];\n if (benchmarkSeriesMap.has(label)) {\n return;\n }\n\n benchmarkSeriesMap.set(label, getBenchmarkPriceTick(dateTimeFormatter, label, benchmarkColors[index], query.data as IPriceIndexResponse));\n });\n\n useEffect(() => {\n setSelectedBenchmarksSeries(mapBenchmarkNamesToBenchmarkSeries(selectedBenchmarks, benchmarkSeriesMap));\n }, [benchmarkSeriesMap.size, benchmarkSeriesMap, selectedBenchmarks]);\n\n const removeSelectedBenchmark = useCallback(\n (name: string) => {\n selectedBenchmarks.delete(name);\n setSelectedBenchmarks(new Set(selectedBenchmarks));\n },\n [selectedBenchmarks]\n );\n\n const addSelectedBenchmarkLocalStorage = (benchmarkDynamic: IBenchmarkIndexListDynamic) => {\n const localStorageBenchmarks: IBenchmarksLocalStorage | null = localStorage.get(BENCHMARKS);\n const userId = userStore?.user?.id;\n\n localStorage.set(BENCHMARKS, {\n userId,\n dynamicIndexList: [...(localStorageBenchmarks?.dynamicIndexList ?? []), ...(benchmarkDynamic?.isDynamic ? [benchmarkDynamic] : [])],\n });\n };\n\n const addSelectedBenchmark = useCallback(\n (name: string) => {\n selectedBenchmarks.add(name);\n setSelectedBenchmarks(new Set(selectedBenchmarks));\n },\n [selectedBenchmarks]\n );\n\n // Remove from dynamic BenchmarkList\n const onRemove = ({ isin, wikifolioId, label }: { isin: string; label: string; wikifolioId: string }) => {\n const newBenchmarkListDynamic = benchmarkListDynamic.filter(benchmark => benchmark.isin !== isin || benchmark.wikifolioId !== wikifolioId);\n\n setBenchmarkListDynamic(newBenchmarkListDynamic);\n removeSelectedBenchmark(label);\n\n const localStorageBenchmarks: IBenchmarksLocalStorage | null = localStorage.get(BENCHMARKS);\n const dynamicIndexList = (localStorageBenchmarks?.dynamicIndexList || []).filter(benchmark => benchmark.label !== label);\n const userId = userStore?.user?.id;\n\n localStorage.set(BENCHMARKS, {\n userId,\n dynamicIndexList,\n });\n };\n\n const onChange = useCallback(\n (name: string, isChecked: boolean) => {\n if (isChecked) {\n addSelectedBenchmark(name);\n } else {\n removeSelectedBenchmark(name);\n }\n },\n [addSelectedBenchmark, removeSelectedBenchmark]\n );\n\n const onReset = () => {\n setSelectedBenchmarks(new Set());\n setPublishChecked(false);\n setEmissionChecked(false);\n };\n\n const handlePublishOnChange = (event: ChangeEvent<HTMLInputElement>) => {\n setPublishChecked(event.target.checked);\n };\n\n const handleEmissionChecked = (event: ChangeEvent<HTMLInputElement>) => {\n setEmissionChecked(event.target.checked);\n };\n\n useEffect(() => {\n benchmarkQueries.forEach((query, index) => {\n if (query.isError) {\n // Un-select checkbox if data fetch failed\n onChange(benchmarkIndexList[index].label, false);\n }\n });\n }, [benchmarkIndexList, benchmarkQueries, onChange]);\n\n useEffect(() => {\n const userId = userStore?.user?.id;\n\n const localStorageBenchmarks: IBenchmarksLocalStorage | null = localStorage.get(BENCHMARKS);\n\n if (userId && localStorageBenchmarks?.userId && localStorageBenchmarks.userId !== userId) {\n localStorage.set(BENCHMARKS, null);\n return;\n }\n\n if (localStorageBenchmarks?.dynamicIndexList?.length) {\n setBenchmarkListDynamic(localStorageBenchmarks.dynamicIndexList);\n }\n }, [userStore?.user?.id]);\n\n return {\n selectedBenchmarksSeries,\n selectedBenchmarks,\n isLoading: benchmarkQueries.some(query => query.isLoading),\n onChange,\n onRemove,\n setBenchmarkListDynamic,\n addSelectedBenchmark,\n addSelectedBenchmarkLocalStorage,\n benchmarkListDynamic,\n isLimitReached: selectedBenchmarks.size === MAX_ITEMS_TO_COMPARE,\n publishProps: {\n isChecked: isPublishChecked,\n onChange: handlePublishOnChange,\n },\n emissionProps: {\n isChecked: isEmissionChecked,\n onChange: handleEmissionChecked,\n },\n resetButtonProps: {\n isDisabled: selectedBenchmarks.size === 0 && !isPublishChecked && !isEmissionChecked,\n onClick: onReset,\n },\n };\n};\nexport type IBenchmarkState = ReturnType<typeof useBenchmarkState>;\n","import { MutableRefObject, useEffect } from \"react\";\nimport { useToken } from \"@chakra-ui/react\";\nimport { Chart as IChart } from \"highcharts/highstock\";\nimport { getPlotLineConfig } from \"src/components/common/benchmark/configs\";\n\nconst ID_EMISSION = \"emission\";\nconst ID_PUBLISH = \"publish\";\n\ninterface IProps {\n chartRef: MutableRefObject<IChart | null>;\n emissionDate?: number;\n publishDate?: number;\n dict: {\n emission: string;\n publish: string;\n };\n}\n/**\n * Handles adding/removing of 'emission' or 'publish' plot-line to/from the chart.\n */\nexport const useEffectChartPlotLines = (props: IProps, [showEmissionLine, showPublishLine]: [boolean, boolean]) => {\n const { chartRef, emissionDate, publishDate, dict } = props;\n const [gray500] = useToken(\"colors\", [\"gray.500\"]);\n\n useEffect(() => {\n if (!chartRef.current || !emissionDate) {\n return;\n }\n\n if (showEmissionLine) {\n chartRef.current.xAxis[0].addPlotLine(getPlotLineConfig({ id: ID_EMISSION, timestamp: emissionDate, label: dict.emission, gray500 }));\n } else {\n chartRef.current.xAxis[0].removePlotLine(ID_EMISSION);\n }\n }, [chartRef, dict.emission, emissionDate, gray500, showEmissionLine]);\n\n useEffect(() => {\n if (!chartRef.current || !publishDate) {\n return;\n }\n\n if (showPublishLine) {\n chartRef.current.xAxis[0].addPlotLine(getPlotLineConfig({ id: ID_PUBLISH, timestamp: publishDate, label: dict.publish, gray500 }));\n } else {\n chartRef.current.xAxis[0].removePlotLine(ID_PUBLISH);\n }\n }, [chartRef, dict.publish, gray500, publishDate, showPublishLine]);\n};\n","import { useMemo } from \"react\";\nimport { useToken } from \"@chakra-ui/react\";\nimport { useWfClosePriceIndexQuery } from \"src/api/client/price-chart.api\";\nimport { getWfPriceTick } from \"src/components/common/benchmark//utils/chart-util\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\n\nexport const useWikifolioClosePriceChart = (wikifolioId: string, isQueryEnabled: boolean) => {\n const [green600] = useToken(\"colors\", [\"green.600\"]);\n const dateTimeFormatter = useDateTimeFormatter();\n const { isLoading, data } = useWfClosePriceIndexQuery(wikifolioId, isQueryEnabled);\n\n const wfClosePriceSeries = useMemo(\n () => (data && data.timestamps.length > 0 ? getWfPriceTick(dateTimeFormatter, green600, data) : undefined),\n [data, dateTimeFormatter, green600]\n );\n\n return {\n wfClosePriceSeries,\n isLoading,\n };\n};\n","import { useMemo } from \"react\";\nimport { useToken } from \"@chakra-ui/react\";\nimport { useWfPriceIndexQuery } from \"src/api/client/price-chart.api\";\nimport { getWfPriceTick } from \"src/components/common/benchmark/utils/chart-util\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\n\nexport const useWikifolioPriceChart = (wikifolioId: string) => {\n const [green600] = useToken(\"colors\", [\"green.600\"]);\n const dateTimeFormatter = useDateTimeFormatter();\n const { formatNumber } = useNumberFormatter();\n const { data, isLoading } = useWfPriceIndexQuery(wikifolioId);\n const wfPriceSeries = useMemo(\n () => (data && data.timestamps.length > 0 ? getWfPriceTick(dateTimeFormatter, green600, data) : undefined),\n [data, dateTimeFormatter, green600]\n );\n const currentPrice = data && formatNumber(data.values[data.values.length - 1], 2);\n\n return useMemo(\n () => ({\n wfPriceSeries,\n currentPrice,\n isLoading,\n publishDate: data?.publishDate ? new Date(data?.publishDate).getTime() : undefined,\n emissionDate: data?.emissionDate ? new Date(data?.emissionDate).getTime() : undefined,\n todaysFirstTick: data?.todaysFirstTick,\n }),\n [currentPrice, data?.emissionDate, data?.publishDate, data?.todaysFirstTick, isLoading, wfPriceSeries]\n );\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { BoxProps, Flex, useDisclosure } from \"@chakra-ui/react\";\nimport { Chart as IChart, PointOptionsObject } from \"highcharts/highstock\";\nimport dynamic from \"next/dynamic\";\nimport { useTranslation } from \"next-i18next\";\nimport { Section } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { TimeRangeSelect } from \"src/components/common/time-range-select/time-range-select\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { IWikifolio } from \"src/types/common\";\nimport { EnumWikifolioStatus } from \"src/types/common-enum\";\nimport { differenceInDays } from \"src/utils/date-util\";\nimport { IBenchmarkOverlayProps } from \"./benchmark-settings-modal\";\nimport { IBenchmarkDict } from \"./benchmark.types\";\nimport { Chart } from \"./chart\";\nimport { defaultBenchmarkIndexList, getBenchmarkTooltipResetConfig, getBenchmarkTooltipUpdateConfig, getWikifolioTimeRangeItems } from \"./configs\";\nimport { useBenchmarkState } from \"./hooks/use-benchmark-state\";\nimport { useEffectChartPlotLines } from \"./hooks/use-effect-chart-plotlines\";\nimport { useWikifolioClosePriceChart } from \"./hooks/use-wikifolio-close-price-chart\";\nimport { useWikifolioPriceChart } from \"./hooks/use-wikifolio-price-chart\";\nimport { drawChartSeries, getLastEmissionDateFromBenchmarkSeries, removeUnselectedBenchmarkSeries } from \"./utils/chart-util\";\n\nconst BenchmarkSettingsModal = dynamic<IBenchmarkOverlayProps>(\n () => import(\"./benchmark-settings-modal\").then(component => component.BenchmarkSettingsModal),\n {\n ssr: false,\n }\n);\n\nexport interface IBenchmarkProps extends BoxProps {\n wikifolioId: IWikifolio[\"id\"];\n wikifolioStatus: EnumWikifolioStatus;\n creationDate: string;\n dict: IBenchmarkDict;\n baseCurrency: string;\n // Callback when chart finishes animation or has no data\n onChartReady?: () => void;\n}\n\nconst CHART_HEIGHT = \"390px\";\nconst WF_MIN_DAYS_OLD = 7;\n\nexport const WikifolioDetailBenchmark = ({\n wikifolioId,\n wikifolioStatus,\n creationDate,\n dict,\n baseCurrency,\n onChartReady,\n ...boxProps\n}: IBenchmarkProps) => {\n const overlay = useDisclosure();\n const { t } = useTranslation([\"date-range\", \"wf-detail\"]);\n const { formatDateShort } = useDateTimeFormatter();\n const benchmarkState = useBenchmarkState(defaultBenchmarkIndexList);\n const { selectedBenchmarksSeries, selectedBenchmarks } = benchmarkState;\n const isBenchmarkActive = selectedBenchmarks.size > 0;\n const timeRangeItems = getWikifolioTimeRangeItems(t, isBenchmarkActive);\n const { isLoading: isWfPriceLoading, wfPriceSeries, currentPrice, emissionDate, publishDate } = useWikifolioPriceChart(wikifolioId);\n const { isLoading: isWfClosedPriceLoading, wfClosePriceSeries } = useWikifolioClosePriceChart(wikifolioId, isBenchmarkActive);\n const [selectedTime, setSelectedTime] = useState(Infinity);\n const chartRef = useRef<IChart | null>(null);\n\n const isLoading = isWfPriceLoading || benchmarkState.isLoading || isWfClosedPriceLoading;\n const isOldEnoughToAnalyze = differenceInDays(new Date(creationDate), new Date()) > WF_MIN_DAYS_OLD;\n const isAnalysisBtnDisabled = wikifolioStatus === EnumWikifolioStatus.Closed || isLoading || !wfPriceSeries || !isOldEnoughToAnalyze;\n\n useEffectChartPlotLines({ chartRef, emissionDate, publishDate, dict: dict.overlay }, [\n benchmarkState.emissionProps.isChecked,\n benchmarkState.publishProps.isChecked,\n ]);\n\n const onChangeTimeRange = useCallback(\n (value: number, extremes?: { min: number; max: number }) => {\n if (!chartRef.current || !wfPriceSeries) {\n return;\n }\n\n if (extremes) {\n chartRef.current.xAxis[0].setExtremes(extremes.min, extremes.max);\n setSelectedTime(-1);\n return;\n }\n\n const currentWfPriceData = (chartRef.current.series.length === 1 ? wfPriceSeries.data : wfClosePriceSeries!.data) as PointOptionsObject[];\n const max = currentWfPriceData[currentWfPriceData.length - 1].x!;\n\n const min = value === Infinity ? currentWfPriceData[0].x : max - value;\n chartRef.current.xAxis[0].setExtremes(min, max);\n\n setSelectedTime(value);\n },\n [wfClosePriceSeries, wfPriceSeries]\n );\n\n useEffect(() => {\n if (!chartRef.current || !wfPriceSeries?.data || !wfClosePriceSeries?.data || !selectedBenchmarksSeries) {\n return;\n }\n\n const { series } = chartRef.current;\n\n const wfClosePriceStartDate: number = (wfClosePriceSeries.data as PointOptionsObject[])[0].x!;\n const lastEmissionDate = getLastEmissionDateFromBenchmarkSeries(selectedBenchmarksSeries, wfClosePriceStartDate);\n\n drawChartSeries(chartRef.current, selectedBenchmarksSeries, series, lastEmissionDate);\n\n if (series.length === 1) {\n // Reset wikifolio chart to initial state\n chartRef.current.update(getBenchmarkTooltipResetConfig());\n chartRef.current.yAxis[0].setCompare(undefined);\n series[0].setData(wfPriceSeries.data);\n } else {\n // Switch to benchmark comparison mode\n chartRef.current.update(getBenchmarkTooltipUpdateConfig());\n chartRef.current.yAxis[0].setCompare(\"percent\");\n\n // Cut the wf close price to align with all series\n if (lastEmissionDate) {\n const index = (wfClosePriceSeries.data as PointOptionsObject[]).findIndex(s => s?.x === lastEmissionDate);\n const wfClosePriceSeriesAdjusted = wfClosePriceSeries.data.slice(index);\n\n series[0].setData(wfClosePriceSeriesAdjusted);\n const max = (wfClosePriceSeriesAdjusted as PointOptionsObject[])[wfClosePriceSeriesAdjusted.length - 1].x!;\n onChangeTimeRange(Infinity, { min: (wfClosePriceSeriesAdjusted as PointOptionsObject[])[0].x!, max });\n } else {\n series[0].setData(wfClosePriceSeries.data);\n onChangeTimeRange(Infinity);\n }\n }\n\n if (series.length && series.length - 1 > selectedBenchmarks.size) {\n removeUnselectedBenchmarkSeries(series, selectedBenchmarks);\n }\n }, [onChangeTimeRange, selectedBenchmarks, selectedBenchmarksSeries, wfClosePriceSeries, wfClosePriceSeries?.data, wfPriceSeries?.data]);\n\n const onZoom = useCallback(() => {\n setSelectedTime(-1);\n }, []);\n\n const chartAriaLabel =\n creationDate && currentPrice\n ? t(\n \"labels.benchmark-chart-aria-label\",\n\n {\n ns: \"wf-detail\",\n creationDate: formatDateShort(new Date(creationDate)),\n currency: baseCurrency,\n currentPrice: currentPrice,\n }\n )\n : undefined;\n\n return (\n <Section pos=\"relative\" w=\"100%\" maxW=\"100%\" {...boxProps}>\n <Flex mb={4}>\n <Flex flexGrow={1} align=\"center\" mr={1}>\n <TimeRangeSelect\n isDisabled={isLoading || !wfPriceSeries}\n value={selectedTime}\n onChange={value => onChangeTimeRange(value)}\n items={timeRangeItems}\n />\n </Flex>\n <Button\n size={[\"sm\", \"xs\"]}\n variant={isBenchmarkActive ? \"solid\" : \"outline\"}\n flexShrink={0}\n isDisabled={isAnalysisBtnDisabled}\n onClick={overlay.onOpen}\n >\n {dict.analysisBtn}\n </Button>\n </Flex>\n <Chart\n chartRef={chartRef}\n series={wfPriceSeries}\n isLoading={isLoading}\n onZoom={onZoom}\n onChartReady={onChartReady}\n h={CHART_HEIGHT}\n baseCurrency={baseCurrency}\n chartAriaLabel={chartAriaLabel}\n />\n {overlay.isOpen && (\n <BenchmarkSettingsModal\n dict={dict.overlay}\n state={benchmarkState}\n onClose={overlay.onClose}\n isOpen={overlay.isOpen}\n defaultBenchmarksList={defaultBenchmarkIndexList}\n showWikifolioDatesSection\n />\n )}\n </Section>\n );\n};\n","import { IBenchmarkProps, WikifolioDetailBenchmark } from \"src/components/common/benchmark/wikifolio-detail-benchmark\";\nimport { setIsBenchmarkReady } from \"./store/benchmark-ready-store\";\n\nexport const WikifolioDetailBenchmarkWrapper = ({ wikifolioId, wikifolioStatus, creationDate, dict, baseCurrency, ...boxProps }: IBenchmarkProps) => {\n const onChartReady = () => {\n setIsBenchmarkReady();\n };\n\n return (\n <WikifolioDetailBenchmark\n wikifolioId={wikifolioId}\n wikifolioStatus={wikifolioStatus}\n creationDate={creationDate}\n baseCurrency={baseCurrency}\n dict={dict}\n onChartReady={onChartReady}\n {...boxProps}\n />\n );\n};\n","import React, { useRef } from \"react\";\nimport { Skeleton, Text } from \"@chakra-ui/react\";\nimport dynamic from \"next/dynamic\";\nimport { useTranslation } from \"next-i18next\";\nimport { Section } from \"src/components/base\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { EnumJumpMarkSection } from \"src/components/pages/detail/jump-marks/consts\";\nimport { useJumpMarkAnchorRefs } from \"src/components/pages/detail/jump-marks/jump-mark-anchor-refs-provider\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { EnumWikifolioStatus } from \"src/types/common-enum\";\nimport { ITreemapChartProps } from \"./treemap-chart\";\nimport { TreemapChartSkeleton } from \"./treemap-chart-skeleton\";\nimport { ITreemapChart } from \"./types\";\n\nexport const TREEMAP_CHART_TEST_ID = \"tree-map-chart\";\n\nconst TreemapChart = dynamic<ITreemapChartProps>(() => import(\"./treemap-chart\").then(component => component.TreemapChart), {\n loading: () => (\n <>\n <Skeleton rounded=\"8px\" mb={2} h=\"48px\" width={[\"100%\", \"294px\"]} marginLeft=\"auto\" />\n <TreemapChartSkeleton />\n </>\n ),\n ssr: false,\n});\n\nexport const TreemapChartSection = ({ dict, symbol, creationDate, wikifolioStatus }: ITreemapChart) => {\n const { t } = useTranslation(\"wf-detail\");\n const { scrollName } = useJumpMarkAnchorRefs();\n\n const isReadyToLoad = scrollName === null || scrollName === EnumJumpMarkSection.KeyFigures;\n const sectionRef = useRef<HTMLDivElement>(null);\n const isVisible = useViewportSpy(isReadyToLoad ? sectionRef : { current: null }, { threshold: 0.5, visibleOnce: true });\n\n const shouldRenderPnlChart = [\n EnumWikifolioStatus.Investable,\n EnumWikifolioStatus.Published,\n EnumWikifolioStatus.IssuingRequested,\n EnumWikifolioStatus.EmissionProcessStarted,\n EnumWikifolioStatus.ReadyForIssuing,\n ].includes(wikifolioStatus);\n\n return shouldRenderPnlChart ? (\n <React.StrictMode>\n <Section ref={sectionRef} data-test-id={TREEMAP_CHART_TEST_ID}>\n <WfHeading as=\"h2\" fontSize=\"2xl\" mb={2}>\n {dict.title}\n </WfHeading>\n <Text mb={4}> {dict.description}</Text>\n\n {isVisible ? (\n <TreemapChart symbol={symbol} creationDate={creationDate} chartAriaLabel={t(\"labels.treemap-chart-aria-label\")} />\n ) : (\n <>\n <Skeleton rounded=\"8px\" mb={2} h=\"48px\" width={[\"100%\", \"294px\"]} marginLeft=\"auto\" />\n <TreemapChartSkeleton />\n </>\n )}\n </Section>\n </React.StrictMode>\n ) : null;\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { IWikifolioWatchlistCtaData } from \"src/api/server/wf-detail.types\";\nimport { ArrowLink } from \"src/components/base/arrow-link\";\nimport { WatchlistButton } from \"src/components/common/buttons/watchlist-button/watchlist-button\";\nimport { IconWikifolioCta } from \"src/components/icons\";\nimport { useWikifolioStore } from \"src/stores/wikifolio-store\";\n\ninterface IWatchlistCtaProps {\n wikifolioId: string;\n wikifolioShortDescription: string;\n data: IWikifolioWatchlistCtaData;\n}\n\nexport const WatchlistCta = ({ wikifolioId, wikifolioShortDescription, data: { headline, description, link } }: IWatchlistCtaProps) => {\n const { watchlist, setOnWatchlist } = useWikifolioStore();\n const isOnWatchlist = watchlist[wikifolioId] ?? false;\n\n return (\n <Flex direction={[\"column\", \"column\", \"row-reverse\"]} alignItems=\"center\" py={[6, 6, 8]} gap={[3, 3, 3, 14]}>\n <Box>\n <IconWikifolioCta width={[\"143px\", \"143px\", \"263px\"]} height={[\"80px\", \"80px\", \"146px\"]} opacity={0.5} />\n </Box>\n <Flex direction=\"column\" gap={3}>\n <Box fontSize={[\"3xl\", \"3xl\", \"4xl\"]} fontWeight={[\"bold\", \"bold\", \"heavy\"]}>\n {headline}\n </Box>\n <Box fontSize={[\"xl\", \"xl\", \"2xl\"]}>{description}</Box>\n <Flex direction={[\"column\", \"row\"]} gap=\"3\" alignItems={[\"initial\", \"center\"]}>\n <WatchlistButton\n size=\"md\"\n wikifolioId={wikifolioId}\n wikifolioShortDescription={wikifolioShortDescription}\n isOnWatchlist={isOnWatchlist}\n setOnWatchlist={setOnWatchlist}\n />\n <ArrowLink href={link.url} fontWeight=\"semibold\" target={link.target} textAlign={[\"center\", \"initial\"]}>\n {link.name}\n </ArrowLink>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { IWikifolioWatchlistCtaData } from \"src/api/server/wf-detail.types\";\nimport { Container } from \"src/components/layout/container\";\nimport { WatchlistCta } from \"./watchlist-cta\";\n\ninterface IWatchlistCtaSectionProps extends BoxProps {\n wikifolioId: string;\n wikifolioShortDescription: string;\n data: IWikifolioWatchlistCtaData;\n}\nconst WATCHLIST_CTA_SECTION_TEST_ID = \"watchlist-cta-section-test-id\";\n\nexport const WatchlistCtaSection = ({ wikifolioId, wikifolioShortDescription, data, ...boxProps }: IWatchlistCtaSectionProps) => {\n return (\n <Box data-test-id={WATCHLIST_CTA_SECTION_TEST_ID} backgroundColor=\"gray.50\" mb={[10, 10, 14]} {...boxProps}>\n <Container>\n <WatchlistCta wikifolioId={wikifolioId} wikifolioShortDescription={wikifolioShortDescription} data={data}></WatchlistCta>\n </Container>\n </Box>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { Container } from \"src/components/layout/container\";\nimport { LeverageProductsModal } from \"src/components/modals/leverage-products-modal/leverage-products-modal\";\nimport { Ad } from \"src/components/modules/ad-module/ad-module\";\nimport { CertificateBox } from \"src/components/pages/detail/certificate-box\";\nimport { GENERAL_SECTION_SPACING } from \"src/components/pages/detail/constants\";\nimport { DownloadSection } from \"src/components/pages/detail/download-section\";\nimport { FeedSection } from \"src/components/pages/detail/feed/feed-section\";\nimport { JumpMarkAnchor, JumpMarksBar, JumpMarkSection } from \"src/components/pages/detail/jump-marks\";\nimport { EnumJumpMarkSection } from \"src/components/pages/detail/jump-marks/consts\";\nimport { JumpMarkAnchorRefsProvider } from \"src/components/pages/detail/jump-marks/jump-mark-anchor-refs-provider\";\nimport { KeyFigures } from \"src/components/pages/detail/key-figures/key-figures\";\nimport { NewsListSection } from \"src/components/pages/detail/news/news-list-section\";\nimport { PortfolioChartWrapper } from \"src/components/pages/detail/portfolio-chart/portfolio-chart-wrapper\";\nimport { PortfolioTableSection } from \"src/components/pages/detail/portfolio-table-section/portfolio-table-section\";\nimport { SalesSection } from \"src/components/pages/detail/sales-section/sales-section\";\nimport { SelectedWikifolios } from \"src/components/pages/detail/selected-wikifolios\";\nimport { HideContent } from \"src/components/pages/detail/shared/hide-content\";\nimport { TagSection } from \"src/components/pages/detail/tag-section\";\nimport { TopKpi } from \"src/components/pages/detail/top-kpi/top-kpi\";\nimport { TopSection } from \"src/components/pages/detail/top-section\";\nimport { TradeHistorySection } from \"src/components/pages/detail/trade-history/trade-history-section\";\nimport { TradingIdeaSection } from \"src/components/pages/detail/trading-idea-section\";\nimport { WikifolioDetailBenchmarkWrapper } from \"src/components/pages/detail/wikifolio-detail-benchmark-wrapper\";\nimport { LANGUAGE } from \"src/consts/locale\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { TreemapChartSection } from \"./treemap-chart/treemap-chart-section\";\nimport { WatchlistCtaSection } from \"./watchlist-cta\";\n\ninterface IWikifolioDetailPage extends Pick<IWikifolioDetailProps, \"data\" | \"dict\" | \"head\"> {\n isLoggedIn: boolean;\n wikifolioId: string;\n}\n\nconst MAIN_VIEW_WIDTH = [\"auto\", \"670px\", \"604px\", \"752px\"];\n\nexport const WikifolioDetailPage = ({ data, dict, head, isLoggedIn, wikifolioId }: IWikifolioDetailPage) => {\n const { language } = useRouterLocale();\n\n return (\n <>\n <Flex flexDirection=\"column\" mb={[5, 10]}>\n <JumpMarkAnchorRefsProvider>\n <Container order={[\"initial\", -1]}>\n <JumpMarkSection section={EnumJumpMarkSection.Overview}>\n <TopSection\n data={data}\n headData={{ metaTitle: head.title, metaDescription: head.description, url: head.canonicalUrl }}\n mt={[5, 5, 7]}\n mb={[3, 4]}\n />\n </JumpMarkSection>\n </Container>\n <JumpMarksBar order={-1} dict={dict} mb={[0, 4]} />\n <Container>\n <Flex justifyContent=\"space-between\" flexDirection={[\"column\", \"column\", \"row\"]}>\n <Box width={MAIN_VIEW_WIDTH}>\n <JumpMarkSection section={EnumJumpMarkSection.Overview} overflow={[\"hidden\", \"visible\"]}>\n {isLoggedIn ? (\n <WikifolioDetailBenchmarkWrapper\n wikifolioId={data.wikifolio.id}\n wikifolioStatus={data.wikifolio.status}\n creationDate={data.masterData.creationDate.value}\n baseCurrency={data.wikifolio.currency}\n dict={dict.benchmark}\n mb={[5, 5, 7]}\n />\n ) : (\n <HideContent\n imageSrc=\"/img/chart-hidden-content.png\"\n height={[\"395px\", \"502px\"]}\n headline={dict.hideContent.title}\n description={dict.hideContent.description}\n />\n )}\n <TopKpi keyFigures={data.keyFigures.topKpis} />\n <PortfolioChartWrapper\n isLoggedIn={isLoggedIn}\n wikifolioId={wikifolioId}\n dict={dict.portfolioChart}\n my={GENERAL_SECTION_SPACING}\n />\n </JumpMarkSection>\n </Box>\n <Box as=\"aside\" pos=\"relative\" w={[\"auto\", \"auto\", \"278px\", \"290px\"]} height={[\"auto\", \"auto\", 0]} mb={[10, 10, 0]}>\n <CertificateBox dict={dict.certificate} data={data} />\n {data?.ad && (\n <Box pt={3} display={[\"none\", \"none\", \"block\"]}>\n <Ad {...data.ad} />\n </Box>\n )}\n </Box>\n </Flex>\n </Container>\n\n <Container>\n <Box width={MAIN_VIEW_WIDTH}>\n {(data?.tagsData || data?.salesContent) && (\n <Box mb={[10, 10, 14]}>\n <JumpMarkSection section={EnumJumpMarkSection.Overview}>\n {data.salesContent && <SalesSection data={data.salesContent} mb={GENERAL_SECTION_SPACING} />}\n {data.tagsData && <TagSection data={data.tagsData} dict={dict.tagSection} />}\n </JumpMarkSection>\n </Box>\n )}\n\n <Box mb={[10, 10, 14]}>\n <JumpMarkAnchor section={EnumJumpMarkSection.Feed} />\n <JumpMarkSection section={EnumJumpMarkSection.Feed}>\n {/* FeedSection async loading */}\n <FeedSection wikifolioId={wikifolioId} dict={dict.feed} />\n </JumpMarkSection>\n </Box>\n </Box>\n </Container>\n\n {data.watchlistCta.first && (\n <WatchlistCtaSection\n as=\"section\"\n wikifolioId={wikifolioId}\n wikifolioShortDescription={data.wikifolio.shortDescription}\n data={data.watchlistCta.first}\n />\n )}\n\n <Container>\n <Box width={MAIN_VIEW_WIDTH} mb={[10, 10, 14]}>\n <Box mb={[10, 10, 14]}>\n <JumpMarkAnchor section={EnumJumpMarkSection.TradingIdea} />\n <JumpMarkSection section={EnumJumpMarkSection.TradingIdea}>\n <TradingIdeaSection\n dict={dict}\n isTranslationNecessary={data.isTranslationNecessary}\n description={data.wikifolio.description}\n masterData={data.masterData}\n investmentUniverseData={data.investmentUniverseData}\n />\n </JumpMarkSection>\n </Box>\n\n {isLoggedIn && (\n <>\n <Box mb={[10, 10, 14]}>\n <JumpMarkAnchor section={EnumJumpMarkSection.Portfolio} />\n <JumpMarkSection section={EnumJumpMarkSection.Portfolio}>\n {/* PortfolioTableSection async loading */}\n <PortfolioTableSection fullName={data.wikifolio.fullName} dict={dict.portfolioTable} />\n </JumpMarkSection>\n </Box>\n\n {language === LANGUAGE.DE && (\n <Box mb={[10, 10, 14]}>\n {/* NewsListSection async loading */}\n <NewsListSection\n wikifolioId={wikifolioId}\n headline={dict.newsFeed.headline}\n emptyState={dict.newsFeed.empty}\n />\n </Box>\n )}\n\n <Box mb={[10, 10, 14]}>\n <JumpMarkAnchor section={EnumJumpMarkSection.KeyFigures} />\n <JumpMarkSection section={EnumJumpMarkSection.KeyFigures}>\n <KeyFigures keyFigures={data.keyFigures} dict={dict} />\n </JumpMarkSection>\n </Box>\n {/* TreemapChartSection async loading, has a fixed height */}\n <TreemapChartSection\n wikifolioStatus={data.wikifolio.status}\n dict={dict.pnlChart}\n symbol={data.wikifolio.symbol}\n creationDate={data.masterData.creationDate.value}\n />\n </>\n )}\n </Box>\n </Container>\n {data.watchlistCta.second && (\n <WatchlistCtaSection\n as=\"section\"\n wikifolioId={wikifolioId}\n wikifolioShortDescription={data.wikifolio.shortDescription}\n data={data.watchlistCta.second}\n />\n )}\n <Container>\n <Box width={MAIN_VIEW_WIDTH}>\n {isLoggedIn && (\n <>\n <Box mb={[10, 10, 14]}>\n <JumpMarkAnchor section={EnumJumpMarkSection.Trades} />\n <JumpMarkSection section={EnumJumpMarkSection.Trades}>\n {/* TradeHistorySection async loading */}\n <TradeHistorySection wikifolioId={wikifolioId} dict={dict.tradeHistoryTable} />\n </JumpMarkSection>\n </Box>\n\n {/* Dev-Note: there is no separate jumpmark section for the download area, therefore we keep it under the last section */}\n <JumpMarkSection section={EnumJumpMarkSection.Trades}>\n <DownloadSection data={data} dict={dict.downloadArea} />\n </JumpMarkSection>\n </>\n )}\n\n {!isLoggedIn && (\n <>\n <JumpMarkAnchor section={EnumJumpMarkSection.Portfolio} />\n <JumpMarkSection section={EnumJumpMarkSection.Portfolio} />\n <JumpMarkAnchor section={EnumJumpMarkSection.KeyFigures} />\n <JumpMarkSection section={EnumJumpMarkSection.KeyFigures} />\n\n <JumpMarkAnchor section={EnumJumpMarkSection.Trades} />\n <JumpMarkSection section={EnumJumpMarkSection.Trades} />\n\n <HideContent\n imageSrc=\"/img/portfolio-hidden-content.png\"\n height={[\"815px\", \"1066px\", \"988px\", \"1022px\"]}\n headline={dict.hideContent.title}\n description={dict.hideContent.description}\n wikifolioId={wikifolioId}\n />\n </>\n )}\n </Box>\n </Container>\n </JumpMarkAnchorRefsProvider>\n </Flex>\n\n <SelectedWikifolios headline={dict.selectWikifolioTitle} selectedWikifolios={data.selectedWikifolios} />\n <LeverageProductsModal containsLeverageProducts={data.wikifolio.containsLeverageProducts} />\n </>\n );\n};\n","import { useEffect } from \"react\";\nimport { GetServerSideProps } from \"next\";\nimport { useDetailPageActivityMutation } from \"src/api/client/detail-page-activity.api\";\nimport { fetchWikifolioDetail } from \"src/api/server/wf-detail\";\nimport { IWikifolioDetailProps } from \"src/api/server/wf-detail.types\";\nimport { WikifolioDetailPage } from \"src/components/pages/detail/wf-detail-page\";\nimport { serverSideTranslations } from \"src/i18n/server-side-translations\";\nimport { useAuthModalStore } from \"src/stores/auth-modal-store\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { useWikifolioStore } from \"src/stores/wikifolio-store\";\nimport { IBaseParam } from \"src/types/common\";\nimport { addServerTiming } from \"src/utils/nextjs/add-server-timing\";\n\ntype IsolateEffects = {\n wikifolioId: string;\n isOnWatchlist: boolean;\n};\n\nfunction IsolateEffects({ wikifolioId, isOnWatchlist }: IsolateEffects) {\n // DEV-note effects are isolated from WikifolioDetailPage\n // in order to prevent un-needed re-render on initial page render.\n const trackVisitDetailPageActivity = useDetailPageActivityMutation();\n const { setOnWatchlist } = useWikifolioStore();\n const { setReturnUrl } = useAuthModalStore();\n\n useEffect(() => {\n trackVisitDetailPageActivity({\n parameter: `wikifolioId=${wikifolioId}`,\n referrer: document?.referrer ? document.referrer : null,\n });\n\n if (!window.location) {\n return;\n }\n\n setReturnUrl(window.location.pathname);\n }, [setReturnUrl, trackVisitDetailPageActivity, wikifolioId]);\n\n useEffect(() => {\n setOnWatchlist(wikifolioId, isOnWatchlist);\n }, [wikifolioId, isOnWatchlist, setOnWatchlist]);\n\n return null;\n}\n\nfunction Page({ data, dict, head }: IWikifolioDetailProps) {\n const { isLoggedIn } = useUserStore();\n const wikifolioId = data.wikifolio.id;\n const isOnWatchlist = data.wikifolio.isOnWatchlist;\n\n return (\n <>\n <IsolateEffects wikifolioId={wikifolioId} isOnWatchlist={isOnWatchlist} />\n <WikifolioDetailPage wikifolioId={wikifolioId} isLoggedIn={isLoggedIn} data={data} dict={dict} head={head} />\n </>\n );\n}\n\ntype IParam = IBaseParam & {\n symbol: string;\n};\n\nexport const getServerSideProps: GetServerSideProps<IWikifolioDetailProps, IParam> = async context => {\n const { symbol } = context.params!;\n const adId = context.query?.adId as string;\n\n const [props, translations] = await addServerTiming(context.res, \"ssprops\", async () => {\n const props = await fetchWikifolioDetail(symbol, context, adId);\n const translations = await serverSideTranslations(context.locale as string, [\n \"common\",\n \"feed\",\n \"wf-detail\",\n \"date-range\",\n \"reactions\",\n \"comment\",\n ]);\n\n return [props, translations];\n });\n\n if (!props) {\n return { notFound: true };\n }\n\n return {\n props: {\n ...props,\n head: {\n ...props.head,\n chartImageUrl: props.data?.wikifolio?.chartImageUrl || \"\",\n shortDescription: props.global?.gtmData?.wikifolio?.wikifolioShortDescription || \"\",\n },\n ...translations,\n },\n };\n};\n\nexport default Page;\n","export const HOVER_STYLE = {\n cursor: \"pointer\",\n transition: \"all 0.2s\",\n _hover: { boxShadow: \"lg\", transform: \"scale(1.02)\", zIndex: 1 },\n _active: { transform: \"scale(1)\" },\n};\n","/**\n * This code utility is taken from https://www.npmjs.com/package/scroll-js\n * was taken directly as a code not as a module because is causing issues on production build.\n */\nimport { isNumber } from \"src/utils/type-utils\";\n\ntype EasingOptions = \"linear\" | \"ease-in\" | \"ease-out\" | \"ease-in-out\";\n\nexport interface IScrollToCustomOptions extends ScrollToOptions {\n duration?: number;\n easing?: EasingOptions;\n}\n\nexport const DEFAULT_DURATION = 300;\n\nexport async function scrollTo(el: Element | Window, options: IScrollToCustomOptions = {}) {\n if (!(el instanceof Element) && !(el instanceof Window)) {\n throw new Error(`element passed to scrollTo() must be either the window or a DOM element, you passed ${el}!`);\n }\n\n options = sanitizeScrollOptions(options);\n\n const scroll = (\n from: number,\n to: number,\n prop: string,\n startTime: number,\n duration: number | undefined = DEFAULT_DURATION,\n easeFunc: EasingFunction,\n // eslint-disable-next-line @typescript-eslint/ban-types\n callback: Function\n ) => {\n window.requestAnimationFrame(() => {\n const currentTime = Date.now();\n const time = Math.min(1, (currentTime - startTime) / duration);\n\n if (from === to) {\n return callback ? callback() : null;\n }\n\n setScrollPosition(el, easeFunc(time) * (to - from) + from);\n\n /* prevent scrolling, if already there, or at end */\n if (time < 1) {\n scroll(from, to, prop, startTime, duration, easeFunc, callback);\n } else if (callback) {\n callback();\n }\n });\n };\n\n const currentScrollPosition = getScrollPosition(el);\n const scrollProperty = getScrollPropertyByElement(el);\n return new Promise(resolve => {\n scroll(\n currentScrollPosition,\n isNumber(options.top) ? options.top : currentScrollPosition,\n scrollProperty,\n Date.now(),\n options.duration,\n getEasing(options.easing),\n resolve\n );\n });\n}\n\nexport function scrollIntoView(element: HTMLElement, scroller?: Element | ScrollIntoViewOptions, options?: ScrollIntoViewOptions) {\n validateElement(element);\n if (scroller && !(scroller instanceof Element)) {\n options = scroller;\n scroller = undefined;\n }\n const { duration, easing } = sanitizeScrollOptions(options);\n scroller = scroller || utils.getDocument().body;\n let currentContainerScrollYPos = 0;\n let elementScrollYPos = element ? element.offsetTop : 0;\n const document = utils.getDocument();\n\n // if the container is the document body or document itself, we'll\n // need a different set of coordinates for accuracy\n if (scroller === document.body || scroller === document.documentElement) {\n // using pageYOffset for cross-browser compatibility\n currentContainerScrollYPos = window.pageYOffset;\n // must add containers scroll y position to ensure an absolute value that does not change\n elementScrollYPos = element.getBoundingClientRect().top + currentContainerScrollYPos;\n }\n\n return scrollTo(scroller as Element, {\n top: elementScrollYPos,\n left: 0,\n duration,\n easing,\n });\n}\n\nfunction validateElement(element?: HTMLElement) {\n if (element === undefined) {\n const errorMsg = \"The element passed to scrollIntoView() was undefined.\";\n throw new Error(errorMsg);\n }\n if (!(element instanceof HTMLElement)) {\n throw new Error(`The element passed to scrollIntoView() must be a valid element. You passed ${element}.`);\n }\n}\n\nconst getScrollPropertyByElement = (el: Element | Window): \"scrollY\" | \"scrollTop\" => (el instanceof Window ? \"scrollY\" : \"scrollTop\");\n\nfunction sanitizeScrollOptions(options: IScrollToCustomOptions = {}): IScrollToCustomOptions {\n if (options.behavior === \"smooth\") {\n options.easing = \"ease-in-out\";\n options.duration = DEFAULT_DURATION;\n }\n if (options.behavior === \"auto\") {\n options.duration = 0;\n options.easing = \"linear\";\n }\n return options;\n}\n\nfunction getScrollPosition(el: Element | Window): number {\n const document = utils.getDocument();\n if (el === document.body || el === document.documentElement || el instanceof Window) {\n return document.body.scrollTop || document.documentElement.scrollTop;\n } else {\n return el.scrollTop;\n }\n}\n\nfunction setScrollPosition(el: Element | Window, value: number) {\n const document = utils.getDocument();\n if (el === document.body || el === document.documentElement || el instanceof Window) {\n document.body.scrollTop = value;\n document.documentElement.scrollTop = value;\n } else {\n el.scrollTop = value;\n }\n}\n\nexport const utils = {\n // we're really just exporting this so that tests can mock the document.documentElement\n getDocument(): HTMLDocument {\n return document;\n },\n};\n\n// eslint-disable-next-line no-unused-vars\ntype EasingFunction = (t: number) => number;\n\ninterface IEasingFunctions {\n linear: EasingFunction;\n \"ease-in\": EasingFunction;\n \"ease-out\": EasingFunction;\n \"ease-in-out\": EasingFunction;\n}\nexport const easingMap: IEasingFunctions = {\n linear(t: number) {\n return t;\n },\n \"ease-in\"(t: number) {\n return t * t;\n },\n \"ease-out\"(t: number) {\n return t * (2 - t);\n },\n \"ease-in-out\"(t: number) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n};\n\nconst getEasing = (easing?: EasingOptions): EasingFunction => {\n const defaultEasing = \"linear\";\n const easeFunc = easingMap[easing || defaultEasing];\n if (!easeFunc) {\n const options = Object.keys(easingMap).join(\",\");\n throw new Error(`Scroll error: scroller does not support an easing option of \"${easing}\". Supported options are ${options}`);\n }\n return easeFunc;\n};\n","export { scrollIntoView, scrollTo } from \"./scroll-util\";\n","export const numberToPx = (value: number) => `${value}px`;\n"],"names":["window","__NEXT_P","push","__webpack_require__","EnumTimeRange","useDownloadMutation","mutatePromise","useMutation","API_DETAIL_DOWNLOAD_URL","accept","Today","Last7Days","Last30Days","Last90Days","YTD","LastYear","SinceEmission","SinceCreation","EnumAssetType","Stocks","ETFs","Derivatives","Wikifolios","Cash","usePortfolioTableQuery","fullName","options","useQuery","createApiWikifolioPortfolioUrl","staleTime","refetchInterval","retry","getChartGlobalConfig","t","chartAriaLabel","lang","accessibility","svgContainerLabel","chartContainerLabel","undefined","decimalPoint","thousandsSep","months","weekdays","shortMonths","getChartConfig","formatters","gray200","gray500","gray800","series","onZoom","baseCurrency","param","rangeSelector","enabled","scrollbar","navigator","exporting","title","text","credits","legend","time","useUTC","chart","spacing","zooming","type","resetZoomButton","theme","style","display","selectionMarkerFill","events","selection","xAxis","tickLength","lineWidth","labels","y","color","fontSize","fontWeight","dateTimeLabelFormats","second","minute","hour","day","week","month","crosshair","label","dashStyle","width","setExtremes","extremes","minTickInterval","max","min","DAY_IN_MS","update","yAxis","opposite","showLastLabel","gridLineColor","gridLineDashStyle","gridLineWidth","align","x","padding","plotOptions","line","marker","radius","descriptionFormat","states","hover","lineWidthPlus","connectNulls","turboThreshold","tooltip","useHTML","borderWidth","distance","shadow","textAlign","fill","headerFormat","shape","split","pointFormatter","length","getChartTooltip","getBenchmarkTooltip","numberFormatter","getWikifolioTimeRangeItems","isIntraDayDisabled","perfSince","value","labelLong","concat","isDisabled","MONTH_IN_MS","YEAR_IN_MS","Infinity","DYNAMIC_BENCHMARK_COLORS","defaultBenchmarkIndexList","isin","colorScheme","getPlotLineConfig","id","timestamp","zIndex","backgroundColor","borderRadius","fontFamily","rotation","CLASS_BENCHMARK_HEADER","getBenchmarkTooltipUpdateConfig","compareStart","getBenchmarkTooltipResetConfig","WIKI","toChartTicks","formatter","data","values","map","index","date","Date","timestamps","getTime","formattedDate","formatDateWithWeekday","showShortDateFormat","getHours","getMinutes","getChartSeries","name","symbol","getWfPriceTick","getBenchmarkPriceTick","getChartTooltipDate","dateInMilSec","formatDateTimeWithWeekday","CLASS_BENCHMARK_TOOLTIP","change","formatPerformance","CLASS_CHART_TOOLTIP","param1","dateTimeFormatter","formatNumber","removeUnselectedBenchmarkSeries","selectedBenchmarks","unselectedBenchmarks","forEach","item","has","remove","mapBenchmarkNamesToBenchmarkSeries","benchmarkNames","benchmarkSeriesMap","Array","from","benchmarkName","get","filter","Boolean","getLastEmissionDateFromBenchmarkSeries","closePriceStartDate","reduce","acc","b","_","startDate","sort","a","drawChartSeries","seriesToDraw","currentSeries","lastEmissionDate","benchmark","activeBenchmark","find","activeBenchmarkEmissionDate","findIndex","addSeries","slice","isDynamicBenchmark","isSearchWikifolio","w","getColorScheme","benchmarkListDynamic","some","ArrowButton","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","IconButton","icon","IconArrowRight","boxSize","size","bg","variant","borderColor","props","ChartLoadingState","children","numberOfLines","boxProps","useToken","jsxs","FullSizeFlex","direction","justify","pl","Box","backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","h","ChartNoDataState","useTranslation","FullSizeFlexCentered","IconHidden","Text","mt","HoverCard","chakra","Flex","baseStyle","p","boxShadow","HOVER_STYLE","KeyFigure","ranking","hidePoints","rankingValueFontWeight","flexProps","formatDateShort","useDateTimeFormatter","data-test-id","flexFlow","lineHeight","EnumRankingType","creationDate","as","noOfLines","wordBreak","alignSelf","WfPopover","PopoverButtonIconInfo","ariaLabel","ml","RankingValue","H1_FONT_SIZE","H2_FONT_SIZE","H3_FONT_SIZE","getTitleProps","titleAsH2","mb","getHeadlineProps","titleAsH1","ModulePrimaryHeadline","WfHeading","ModuleSecondaryHeadline","PrimaryHeadline","SCROLL_SNAP_PROPS","scrollbarWidth","msOverflowStyle","msScrollSnapType","scrollSnapType","scrollBehavior","ScrollSnap","sx","gridProps","Grid","ScrollSnapItem","scrollSnapAlign","TimeRangeButton","active","onClick","jsx_runtime","Button","rounded","userSelect","cursor","px","opacity","TimeRangeSelect","items","onChange","handleOnChange","event","target","parsedValue","isNaN","parseInt","WfSelect","toString","aria-label","option","disabled","HStack","WikifolioInfoCard","trader","shortDescription","buildWikifolioLink","useLinkBuilder","getUserName","useGetUserName","WfLinkUnstyled","href","_hover","transform","TraderAvatar","flexShrink","mr","flexGrow","Ranking","labelProps","CARD_WIDTH_SM_MD","colorSchemeMap","white","gray","SelectedWikifoliosModule","description","wikifolioColumns","wfCardProps","hasCardsWithTitle","column","canScrollPrev","canScrollNext","scrollContainerRef","collectItemRefs","handleScroll","useAutoScrollingList","hasNavButtonsLg","Container","py","Stack","ref","overflowX","CONTAINER_PX_SM_MD","pr","CONTAINER_PX_SM_MD_NEGATIVE","my","isLastCard","VStack","data-index","node","val","isFirstCard","wikifolios","wikifolio","SCROLL_DIRECTION","LoadingState","pb","Skeleton","SimpleGrid","columns","key","mx","getPerfSinceBuy","bid","averagePurchasePrice","getPerfToday","mid","close","ErrorState","pos","position","pt","top","HideContent","imageSrc","height","headline","wikifolioId","sectionProps","buildLoginModalLink","buildRegisterModalLink","toast","useWfToast","toastVisible","useRef","downloadMutation","onError","current","status","EnumToastStatus","duration","setTimeout","onDownloadClick","EnumDownloadType","error","Section","minWidth","Image","alt","src","layout","role","left","HashLinkUnstyled","Span","textDecor","CHART_HEIGHT","TreemapChartSkeleton","gap","overflow","PREV","NEXT","disableOnBreakpoint","arguments","setCanScrollPrev","useState","setCanScrollNext","isOverflow","setIsOverflow","itemRefs","Map","useBreakpointValue","useCallback","set","updateButtonsState","scrollLeft","scrollWidth","clientWidth","useEffect","container","debouncedUpdate","debounce","addEventListener","removeEventListener","visibleItemIndex","getBoundingClientRect","targetIndex","Math","targetItem","containerStyle","getComputedStyle","paddingRight","paddingLeft","scrollTo","offsetLeft","behavior","defaultOptions","rootMargin","threshold","visibleOnce","__webpack_exports__","elementRef","isVisible","setIsVisible","onIntersecting","observer","IntersectionObserver","entries","isIntersecting","observe","disconnect","EnumFeedType","EnumJumpMarkSection","useDetailPageActivityMutation","language","country","useRouterLocale","createVisitDetailPageActivityUrl","LeverageProductsModal","containsLeverageProducts","disclaimerStore","useDisclaimerStore","isCookieBotConsentReady","useCookieBotConsentReady","modalProps","useDisclosure","onOpen","isOpen","showDisclaimer","isLoading","isError","useLeverageProductsQuery","createApiLeverageProductContentUrl","onClose","handleOnFirstInteraction","useFirstInteraction","isServerSide","Cookies","onFirstInteraction","LeverageProductsModalContent","responseData","disableLeverageProductsDisclaimer","useDisableLeverageProductsMutation","mutate","API_DISABLE_LEVERAGE_PRODUCTS_DISCLAMER_URL","method","logger","message","setLoading","dontShowAgain","setDontShowAgain","onAcceptClick","Modal","closeOnEsc","closeOnOverlayClick","ModalOverlay","ModalContent","maxW","ModalHeader","ModalBody","SimpleRichText","Checkbox","isChecked","e","checked","ModalFooter","redirectUrl","Ad","link","nodeId","image","genericActivity","useGenericActivityFromElysiumMutation","onLinkClick","activityTypeId","EnumActivityType","parameter","JSON","stringify","targetUrl","url","referrer","location","border","AspectRatio","ratio","ResponsiveImage","baseUrl","loading","ArrowLink","onAuxClick","triggerCallbackOnMiddleClickEvent","CertificateBoxContext","createContext","CertificateBoxProvider","Provider","useCertificateBoxContext","useContext","useCertificate","_ref","router","getCertificateByIsin","useRouter","querySearchTerm","query","searchTerm","trim","toUpperCase","getCertificate","getFirstLicensedCertificate","getFirstOrDefaultCertificate","certificates","certificate","isLicensed","selectedCertificate","setSelectedCertificate","updateSelectedCertificate","startTransition","buttonVariants","visible","hidden","childVariants","open","closed","CBDetailsAccordion","dict","isDesktop","fallback","_detailsState","state","showButton","flexDir","AnimatePresence","MotionBox","initial","animate","exit","variants","transition","bounce","rightIcon","IconCaret","onToggle","show","CBHeader","wikifolioCertificateHeadline","CBLabel","CBInvestedCapital","useNumberFormatter","totalInvestments","getGlobals","currency","keyFigures","Fragment","Divider","detailPageStore","proxy","indexLevel","setIndexLevel","PRICES_CONTAINER_HEIGHT","Price","renderValue","minW","CBPrices","useSnapshot","exchangeRatioMultiplier","nonPrimaryIsin","isPrimary","priceData","useWikifolioPriceQuery","queryParams","URLSearchParams","createApiWikifolioPriceUrl","formatTimeShort","isTicking","ask","calculationDate","showMidPrice","midPrice","isCurrencyConverted","getFormattedPriceData","_isTicking","_calcDate","CBPricesNotTicking","askBidFontSize","getAskBidFontSize","maxValue","prices","midRate","divider","StackDivider","sell","buy","tooltips","currencyConverted","CBStatistic","CBEmission","emissionDate","CBCertificateFee","formatPercent","base","certificateFeePerYear","dailyFee","CBPerformanceFee","performanceFee","CBLiquidationFigure","liquidationFigure","CBTradingVolume","tradingVolume","CBExchangeRatio","exchangeRatio","CertificateBoxBarred","isHiddenCertificate","isHidden","IconClosed","barredMessage","CertificateBoxClosed","closedTitle","closedDescription","closingClosedButtonUrl","closingClosedButton","certificateRatio","multiplier","nominator","CBRatioTabBar","justifyContent","CertificateBoxClosingInProgress","closingMessage","closingLinkUrl","WfLink","closingLink","CertificateBoxTest","userStore","useUserStore","isPublishRequested","EnumWikifolioStatus","IconNotAvailable","testMessage","isCurrentUser","editLink","publishButton","SavingsPlanModal","wikifolioSecurityId","wkn","onRequestSettled","useSavingsPlanModalQuery","API_SAVINGS_PLAN_MODAL_URL","onSettled","SavingsPlanModalContent","preferredBroker","brokers","settingsLink","hasPreferredSavingsPlanBroker","useGenericActivityMutation","selectedSavingsPlan","setSelectedSavingsPlan","onNextButtonClick","broker","header","WfModalCloseButton","subHeader","BrokerImage","ComboBox","placeholder","menuListProps","maxH","MAX_HEIGHT_BROKER_LIST","ComboBoxItem","isExternal","className","data-gtm-isin","button","notYourPreferredBroker","SavingsPlanButton","buttonProps","modalDisclosure","useBoolean","handleOnClick","on","off","Certificate","collateralization","IconCertificate","collateralInfo","useCopyIsinModalQuery","API_COPY_ISIN_MODAL_URL","isModalOpen","CopyIsinModal","watchlist","wikifolioShortDescription","isLoggedIn","setOnWatchlist","useWikifolioStore","hideModal","setHideModal","onCloseModal","hideModals","localStorage","HIDE_MODALS_KEY","COPY_ISIN_MODAL","defaultIsOpen","modalText","headline1","description1","headline2","description2","hideModalCheckbox","isOnWatchlist","openModal","includes","blockScrollOnMount","autoFocus","isCentered","alignItems","WatchlistButton","marginTop","CBIsin","CopyIsinButton","copy","CertificateBoxInvestable","isPrimaryCertificate","WfLinkGhost","endAgreementUrl","rel","endAgreementText","linkProspectUrl","linkProspectText","InvestButton","investNow","showSavingsPlanButton","createSavingPlan","useDeclareInterestMutation","API_DECLARE_INTEREST_URL","ID_DECLARE_INTEREST_FORM","DeclareInterestModal","API_DECLARE_INTEREST_MODAL_URL","prefilledEmail","user","email","prefilledCountry","countries","DeclareInterestModalContent","errors","register","handleSubmit","formState","isSubmitting","setError","isFieldInvalid","useForm","mode","defaultValues","validators","useFormValidator","declareInterest","onSubmit","response","Object","fieldName","errorMessage","noValidate","FormControl","isInvalid","FormLabel","Input","FormErrorMessage","required","form","sendButton","DeclareInterestButton","CertificateBoxNotLicensedAll","notLicensedMessage","findInvestableUrl","findInvestableButton","declareInterestButton","generateAvailableLicensedRatiosTranslationOptions","countryText","translationOptions","cert","i","CertificateBoxNotLicensedSingle","toLowerCase","areMultiLicensedCertificates","IconContinue","SLIDER_THUMB_SIZE_HALF","SLIDER_THUMB_SIZE","WfSlider","numberToPx","Slider","SliderTrack","SliderFilledTrack","SliderThumb","CBProgressBar","prefix","currentValue","requiredValue","percentage","round","isCompleted","IconCheckCircle","m","strong","PrebookMotionBox","CertificateBoxPublished","openLoginModal","simplifiedExchangeRate","buyingInterests","setBuyingInterests","reservedCapital","setReservedCapital","intendedInvestment","setIntendedInvestment","INVESTMENT_MIN","addWatchlist","useAddWatchlistWikifoliosMutation","removeWatchlist","useRemoveWatchlistWikifoliosMutation","alwaysShowOperationalMessage","hasBlockedReason","isLegitimized","showOperationalMessage","operationalMessage","onPrebook","result","onUndoPrebook","publishedCriteriaParagraph","testPhaseDays","publishedTestPhase","publishedBuyingInterests","publishedReservedCapital","onExitComplete","prebookTitle","emissionRequired","prebookParagraph","INVESTMENT_MAX","step","INVESTMENT_STEP","prebookButton","OverlayLoadingSpinner","prebookDoneTitle","prebookDoneParagraph","prebookDoneButton","CertificateBoxContent","notLicensedCertificates","wikifolioStatus","CertificateBox","GENERAL_SECTION_SPACING","selectProps","isWikifolioInvestable","Number","today","last7Days","last30Days","last90Days","lastYear","ytd","sinceEmission","sinceCreation","DownloadSection","downloadArea","downloadType","setDownloadType","timeRangePriceData","setTimeRangePriceData","timeRangeAccountStatement","setTimeRangeAccountStatement","range","inflowOutflowDownloadAllowed","CONTAINER_PX_NEGATIVE","RadioGroup","String","Radio","portfolio","accountStatement","inflowOutflow","_disabled","downloadButton","UserFeed","UserFeedTraderComments","UserFeedWikifolioPortfolioChanges","UserFeedTradingMotives","UserFeedHighlights","AllNews","WikifolioNews","DailyLunchbox","WeeklyLunchbox","WikifolioEntity","TraderEntity","UnderlyingEntity","DATA_ATTR_JUMPMARK_SECTION","JUMPMARK_HEIGHT","STICKY_HEADERS_HEIGHT","NAV_HEIGHT","ANCHOR_OFFSET","Overview","Feed","TradingIdea","Portfolio","KeyFigures","Trades","JumpMarkAnchorRefsContext","JumpMarkAnchorRefsProvider","scrollName","setScrollName","getRef","jumpMarkAnchor","setRef","jumpMarkRef","useJumpMarkAnchorRefs","context","FeedCardSkeleton","FeedView","dynamic","Promise","all","then","bind","component","FeedCardList","FeedSection","feed","hasNextPage","fetchNextPage","refetch","useInfiniteFeed","feedUrl","API_FEED_V3_WIKIFOLIO","feedType","sectionRef","seenItemsRef","trackSeenItem","useFeedItemSeenTracking","initializeFeedTrackingStore","page","EnumPageType","useCallbackOnVisibility","isFirstFetch","isReadyToLoadFeed","useViewportSpy","onFirstSeen","contentId","EmptyState","empty","onItemFirstSeen","feedCards","FeedReportModal","commentReportDescription","commentingModalEditorPlaceholder","JumpMarkSection","section","useAnchorOffset","NAV_HEIGHT_VARIATION","useNavHeight","ANCHOR_OFFSET_NEGATIVE_PX","ANCHOR_OFFSET_PX","JumpMarkTab","forwardRef","isActive","onFocus","_focus","borderBottom","data-gtm-action","whiteSpace","getJumpMarkHash","scrollTabIntoViewport","tabScrollX","tabElement","windowWidth","innerWidth","document","documentElement","tabBarRect","x1","x2","tabElementRect","offsetWidth","isTabElementOutside","useJumpToSection","element","removeAttribute","hash","setAttribute","scrollIntoView","path","search","pathname","scrollToTheTop","JumpMarksBar","tabBarContainerRef","tabBarRef","tabRefs","jumpMarkSectionRefs","jumpToSection","dragConstraint","setDragConstraint","useMotionValue","currentlyScrollingToRef","activeId","setActiveId","anchorOffset","isCallerContentApp","useRouterCaller","querySelectorAll","scrollEventListener","throttle","matchingElements","dataset","isElementInViewport","el","rect","windowHeight","innerHeight","clientHeight","vertInView","horInView","resizeEventListener","tabBarContainerWidth","tabBarWidth","onTabClick","order","onWheel","newX","deltaX","bottom","CONTAINER_W","CONTAINER_PX","drag","dragConstraints","right","delete","preventDefault","jumpMarks","JumpMarkAnchor","pointerEvents","KeyFigureGroup","keyFigureGroup","showHeadline","rankings","pivot","ceil","firstColumnRankings","secondColumnRankings","OtherRiskIndicators","keyFigureGroups","Tabs","TabList","Tab","TabPanels","TabPanel","keyfiguresTitle","kpis","_notLast","otherKeyRiskIndicators","useFeedWikifolioNewsQuery","API_FEED_V3_NEWS_WIKIFOLIO","NewsList","formatWeekDayShortWithTimeShort","formatArticleTime","articleTime","isTodayDate","isToday","List","ListItem","NewsListSkeleton","SkeletonText","skeletonHeight","NewsListSection","emptyState","isReadyToLoad","isSectionVisible","JumpMarkLink","arrowLinkProps","benchmarkReadyStore","isReady","isBenchmarkReady","setIsReady","setIsBenchmarkReady","PortfolioChartWrapper","PortfolioChart","aria-hidden","borderY","compareString","localeCompare","compareNumber","sortPortfolioTableDataByColumn","compareName","itemA","itemB","comparePerformanceSinceBuy","perfSinceBuyA","perfSinceBuyB","comparePerformanceToday","perfTodayA","perfTodayB","compareWeighting","chooseCompareFunction","groups","group","sortPortfolioTableDataGroups","dataToSort","shift","usePortfolioTable","isReadyToLoadPortfolioTable","rawData","sortedData","setSortedData","sorting","setSorting","dataWithSortedGroups","sortedTableData","onSortName","onSortPerfSinceBuy","onSortPerfToday","onSortWeighting","SortTableWrapper","PortfolioTable","aria-live","aria-busy","div","animation","PortfolioTableSection","SalesSection","isPreviewImageVisible","setPreviewImageVisible","playerRef","video","previewImage","srcSet","fit","IconPlay","iframe","frameBorder","allow","SelectedWikifolios","selectedWikifolios","canCalculateScroll","chunkArrayEqually","TagSection","flexWrap","rewards","tag","Tag","EnumTagColor","tradings","investmentHorizon","investmentRegion","basics","bvhChallenge","TopKpi","templateColumns","rowGap","keyFigure","isLast","orientation","ShareWikifolioButton","metaTitle","metaDescription","shareOptions","useShareLinksBasic","ShareButton","webShareData","MenuButton","leftIcon","IconShare","span","flex","WfTradernameProfileLink","isDeleted","TopSection","headData","tradeLink","myWikifoliosLink","buildTraderProfileLink","isInvestable","showShareButton","currentUrl","origin","hasFullNameAndNickName","companyName","getFullName","nickName","traderProfileLink","gridColumnGap","IconPencil","IconTrade","gridRowGap","lastLogin","isSelfRegulatedAssetManager","selfRegulatedAssetManagerTooltip","profileLogoData","ns","isSameYear","date1","date2","getFullYear","isSameYearAndMonth","getMonth","isValid","differenceInDays","dateLeft","dateRight","difference","abs","TimeSpan","orders","formatMonthShort","formatMonthShortYear","endDate","executionDate","SpanBox","useTradeHistoryTableQuery","createApiWikifolioTradeHistoryUrl","keepPreviousData","useTradeHistoryTable","setEnabled","setPage","isFetching","isPreviousData","handleScrollIntoView","jumpMarkAnchorRef","isLastPage","tradeHistory","pageCount","newerBtnProps","old","olderBtnProps","TradeHistoryTable","TradeHistorySection","isSuperWikifolio","InvestmentUniverseItem","MenuItem","InvestmentUniverseGroup","universeGroupName","universes","isCrossedOut","every","universe","availableCount","assignedCount","Menu","SpanFlex","MenuList","universeId","InvestmentUniverse","universeGroups","investmentUniverseTitle","superWikifolioInvestmentUniverseParagraph","universeGroupId","MasterDataItem","content","MasterData","masterData","formattedIndexLevel","highWatermark","isTranslationNecessary","canCalculateHeight","isTranslatedDescriptionDisplayed","setIsTranslatedDescriptionDisplayed","ExpandableText","formattingType","originalContent","textProps","isTranslationAvailable","contentTranslatedByWikifolio","originalWikifolioDescriptionContent","toggle","showOriginalText","showTranslatedText","contentNotAvailableInLanguage","TradingIdeaSection","investmentUniverseData","tradingIdeaSection","tradingIdeaTitle","masterDataTitle","CHART_TOOLTIP_STYLES","_before","getIconWikifolioHtml","Chart","chartRef","onChartReady","chartHasNoData","HighchartsAccessibility","Highstock","useIsomorphicLayoutEffect","_series","getObjectCopy","afterAnimate","getBenchmarkQueriesUrl","isDynamic","createApiWikifolioClosePriceIndexUrl","createApiWikifolioBenchmarkUnderlyingUrl","createApiWikifolioBenchmarkIndexUrl","useBenchmarkState","benchmarks","preselectedBenchmarks","defaultBenchmarksList","isSelectedByDefault","setSelectedBenchmarks","Set","isPublishChecked","setPublishChecked","isEmissionChecked","setEmissionChecked","selectedBenchmarksSeries","setSelectedBenchmarksSeries","setBenchmarkListDynamic","benchmarkIndexList","useMemo","benchmarkColors","benchmarkQueries","useQueries","HOUR_IN_MS","removeSelectedBenchmark","addSelectedBenchmarkLocalStorage","localStorageBenchmarks","BENCHMARKS","userId","dynamicIndexList","benchmarkDynamic","addSelectedBenchmark","add","onRemove","newBenchmarkListDynamic","onReset","handlePublishOnChange","handleEmissionChecked","isLimitReached","publishProps","emissionProps","resetButtonProps","ID_EMISSION","ID_PUBLISH","useEffectChartPlotLines","showEmissionLine","showPublishLine","publishDate","addPlotLine","emission","removePlotLine","publish","useWikifolioClosePriceChart","isQueryEnabled","green600","wfClosePriceSeries","useWikifolioPriceChart","useWfPriceIndexQuery","createApiWikifolioPriceIndexUrl","wfPriceSeries","currentPrice","todaysFirstTick","BenchmarkSettingsModal","ssr","WikifolioDetailBenchmark","overlay","benchmarkState","isBenchmarkActive","timeRangeItems","isWfPriceLoading","isWfClosedPriceLoading","selectedTime","setSelectedTime","isOldEnoughToAnalyze","isAnalysisBtnDisabled","onChangeTimeRange","currentWfPriceData","wfClosePriceStartDate","setCompare","setData","s","wfClosePriceSeriesAdjusted","analysisBtn","showWikifolioDatesSection","WikifolioDetailBenchmarkWrapper","TreemapChart","marginLeft","TreemapChartSection","shouldRenderPnlChart","React","WatchlistCta","IconWikifolioCta","WatchlistCtaSection","MAIN_VIEW_WIDTH","WikifolioDetailPage","head","flexDirection","canonicalUrl","hideContent","topKpis","portfolioChart","ad","tagsData","salesContent","tagSection","watchlistCta","first","portfolioTable","LANGUAGE","newsFeed","pnlChart","tradeHistoryTable","selectWikifolioTitle","IsolateEffects","trackVisitDetailPageActivity","setReturnUrl","useAuthModalStore","_symbol_","_active","Element","Window","sanitizeScrollOptions","scroll","to","prop","startTime","DEFAULT_DURATION","easeFunc","callback","requestAnimationFrame","currentTime","now","setScrollPosition","utils","getDocument","body","scrollTop","currentScrollPosition","getScrollPosition","scrollProperty","getScrollPropertyByElement","resolve","isNumber","getEasing","easing","scroller","validateElement","HTMLElement","currentContainerScrollYPos","elementScrollYPos","offsetTop","pageYOffset","easingMap","linear","keys","join"],"sourceRoot":""}